Java调用MATLAB程序--输入输出


输入输出数据与MWNumericArray

Byustc&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);

常规的输入矩阵:

MWNumericArray input = 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的数组,对于多维矩阵按列的顺序连接成数组。如:,返回的数组为1324

其他getBytegetIntgetShortgetLonggetFloat同理

注意:低字节的数据类型会强制转换,导致精度丢失。


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

返回非零元素个数。

转自:https://blog.csdn.net/linweidong2007/article/details/44497167


输入输出数据与MWNumericArray

Byustc&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);

常规的输入矩阵:

MWNumericArray input = 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的数组,对于多维矩阵按列的顺序连接成数组。如:,返回的数组为1324

其他getBytegetIntgetShortgetLonggetFloat同理

注意:低字节的数据类型会强制转换,导致精度丢失。


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

返回非零元素个数。

转自:https://blog.csdn.net/linweidong2007/article/details/44497167

猜你喜欢

转载自blog.csdn.net/qq_22771739/article/details/81502230
今日推荐