Java调用MATLAB程序--输入输出
2015-03-20 20:49
411 查看
输入输出数据与MWNumericArray
By林伟东ustc&xidian调用格式:
Object[] result = null;//用于保存计算结果。
//当返回矩阵有n个,则result[0]...result[n-1]分别是这些返回矩阵。
result = c1.myFunction(1, intput);
//调用matlab函数,第一个数表示输出多少个矩阵,输入1表示输出一个矩阵。
//输入2表示有两个输出矩阵,以此类推。输出多少个矩阵根据原先m文件的定义。
//input表示输入的矩阵,当需要多个输入矩阵时,可以input1,input2...
调用matlab函数时,int型数据可以直接带入:
Example1:
int i=2;
result = c1.myFunction(1,i);
Example2:int[] i={2,3,2,5};
result = c1.myFunction(1,i);
常规的输入矩阵:
MWNumericArrayinput = null;//用于保存输入矩阵
double
array[] = { 3, 2, 4, 5 };//要计算的数
//int array[]={3,2,4,5};也是可以的。
input =new MWNumericArray(array,
MWClassID.DOUBLE);
result = c1.myFunction(1, intput);
输入二维矩阵:
double array[][] ={{3,2,4,5},{2,4,4,5}
};//要计算的数,两行四列
//int array[][] ={ {3,2,4,5},{2,4,4,5} };也是可以的。
//输入三维等多维矩阵同理。
input =new MWNumericArray(array,
MWClassID.DOUBLE);
result = c1.myFunction(1,intput);
输出的Object[]处理
Object数组有多少元素由输出矩阵数决定Object转换成MWNumericArray
Example:
MWNumericArray output = null;//用于保存输出矩阵
output = (MWNumericArray)result[0];//将结果object转换成MWNumericArray
double res = output.getDouble(1);//从MWNumericArray对象中读取数据
后期处理,释放本地资源
MWArray.disposeArray(input);//建立的矩阵用这句MWArray.disposeArray(output);//建立的矩阵用这句
MWArray.disposeArray(result);//建立的Object数组用这句
c1.dispose();//建立的matlab类对象用这句
以上释放时,必须保证其不为null。
MWNumericArray常用方法介绍
clone():Object复制矩阵,返回的是Object类型,需要强制转换成MWNumericArray。
如:MWNumericArray other = (MWNumericArray)one.clone();
getDouble():double
以double的格式获取矩阵的第一个数,常用于只有一个数的矩阵
getDouble(int i):double
以double的格式获取矩阵中的第i个数
getDouble(int[]i):double
若i两个元素数组,则以double的格式获取矩阵中的i[0]行,i[1]列的数。多维矩阵同理,i的维数要与该矩阵的维数一致,否则出错。
getDoubleData():double[]
返回一个一维double的数组,对于多维矩阵按列的顺序连接成数组。如:,返回的数组为1,3,2,4。
其他getByte、getInt、getShort、getLong、getFloat同理
注意:低字节的数据类型会强制转换,导致精度丢失。
set(int i,double in):void
将矩阵中第i个数设置成in。
以下同理:
set(int
i,byte in):void
set(int
i,short in):void
set(int
i,int in):void
set(int
i,long in):void
set(int
i,float in):void
set(int[]i,double in):void
若i两个元素数组,则设置矩阵中的i[0]行,i[1]列的数为in。
以下同理:
set(int[]
i,byte in):void
set(int[]
i,short in):void
set(int[]
i,int in):void
set(int[]
i,long in):void
set(int[]
i,float in):void
toDoubleArray():Object
将矩阵以Object返回,实为多维double数组返回,需要强制转换成为多维数组。维数由原来矩阵确定。
若为二维数组,则
double[][] dou = (double[][])one.toDoubleArray();
以下同理:
toByteArray():Object
toShortArray():Object
toIntArray():Object
toLongArray():Object
toFloatArray():Object
MWNumericArray父类MWArray常用方法
disposeArray(Objecto):void静态方法,释放矩阵的本地资源。
classID():MWClassID
返回矩阵类型,如double。
getDimensions():int[]
返回int数组,数组大小与矩阵维数相同,依次表示各维大小(如行数、列数)。
isEmpty():boolean
若是空矩阵返回true,否则返回false。
isSparse():boolean
若是稀疏矩阵返回true,否则返回false。
numberOfDimensions():int
返回矩阵维数。
numberOfElements():int
返回矩阵元素个数。
numberOfNonZeros():int
返回非零元素个数。
相关文章推荐
- Java调用SQL存储过程 输入输出参数
- 第7讲 IO/输入与输出-Java程序与其它进程的数据通信
- eclipse调试java调用matlab程序的7.17dll找不到的问题
- 在Java程序中调用Matlab函数
- java调用输入参数、输出参数、输出参数为列表的存储过程(一)
- JAVA高级视频_IO输入与输出 Java程序与其他进程的数据通讯 学习笔记
- java调用输入参数、输出参数、输出参数为列表的存储过程(二)
- 2013-03-07:编写一个JAVA程序,用户用键盘只能输入整数,程序输出这些整数的乘积
- 【程序35】 ArrayChange.java 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
- 在JAVA里面如何调用ORCALE数据库里的存储过程(带输入输出参数)的????
- java调用输入、输出参数为对象的存储过程
- 回顾大学--大一JAVA实验--实验二 Java程序的输入输出
- 【程序29】 TestAdd3.java 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组, //再将a[i][i]累加后输出。
- Java程序的输入与输出
- IO 输入与输出(9)-- Java程序与其他进程的数据通信
- java调用oracle含输入和输出数组的存储过程
- java--封装一类Java对象,用户从输入对话框输入两个日期,程序将判断两个日期的大小关系(比如输出:您输入的第二个日期大于第一个日期)以及两个日期之间的间隔天数(比如输出:2006年6月6日和
- 如何调用命令行程序, 并得到输出, 还有输入交互?
- 【程序15】TestCompare.java 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上, //先将x与y进行比较,如果x>y则将x与y的值
- JAVA:用户从键盘只能输入整数,程序输出这些整数的乘积。