输入输出数据与MWNumericArray

调用格式:
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);

常规的输入矩阵:

MWNumericArray input = null; // 用于保存输入矩阵

方式一:

input = MWNumbericArray.newInstance(int,int[],MWClassID.DOUBLE, MWComplexity.REAL);
//参数1表示矩阵的维数,参数2表示各维的大小即几行几列,参数三表示数据类型,参数四表示实数或复数

方式二:
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);  //1代表返回值的个数为1

输出的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(Object o):void 静态方法,释放矩阵的本地资源。
classID():MWClassID 返回矩阵类型,如double。
getDimensions():int[] 返回int数组,数组大小与矩阵维数相同,依次表示各维大小(如行数、列数)。 isEmpty():boolean 若是空矩阵返回true,否则返回false。
isSparse():boolean 若是稀疏矩阵返回true,否则返回false。
numberOfDimensions():int 返回矩阵维数。
numberOfElements():int 返回矩阵元素个数。
numberOfNonZeros():int 返回非零元素个数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值