matlab compactibilty
조회 수: 2 (최근 30일)
이전 댓글 표시
Hello people,
Here is my problem:
I have created jar file in MATLAB and i use this jar file in JAVA (NetBeans).
Here is my function in m-file: (name: matrica.m)
function out = matrica(a)
out = a(:,1) %a is matrix
end
Here is my code in JAVA:
import com.mat.*;
import com.mathworks.toolbox.javabuilder.*;
public class KlasaMat {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws MWException {
int matrica[][] = new int[3][3];
matrica[0][0] = 1;
matrica[0][1] = 2;
matrica[0][2] = 3;
matrica[1][0] = 4;
matrica[1][1] = 5;
matrica[1][2] = 6;
matrica[2][0] = 7;
matrica[2][1] = 8;
matrica[2][2] = 9;
KlasaMatlab k = null;
k = new KlasaMatlab();
Object[] matrica1 = k.matrica(1, matrica);
System.out.println(matrica1[0]);
}
}
But always get an error like this:
{??? Error using ==> matrica
Too many input arguments.
}
Exception in thread "main" ... Matlab M-code Stack Trace ...
com.mathworks.toolbox.javabuilder.MWException: Error using ==> matrica
Too many input arguments.
at com.mathworks.toolbox.javabuilder.internal.MWMCR.mclFeval(Native Method)
at com.mathworks.toolbox.javabuilder.internal.MWMCR.access$600(MWMCR.java:25)
at com.mathworks.toolbox.javabuilder.internal.MWMCR$6.mclFeval(MWMCR.java:918)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.mathworks.toolbox.javabuilder.internal.MWMCR$5.invoke(MWMCR.java:816)
at $Proxy0.mclFeval(Unknown Source)
at com.mathworks.toolbox.javabuilder.internal.MWMCR.invoke(MWMCR.java:492)
at com.mat.KlasaMatlab.matrica(KlasaMatlab.java:195)
at KlasaMat.main(KlasaMat.java:37)
Java Result: 1
BUILD SUCCESSFUL (total time: 6 seconds)
What to do?
댓글 수: 8
Walter Roberson
2012년 3월 14일
Everyone who answers questions here is a volunteer, answering in their spare time (except when Helen or Ned post official statements.) Relatively few of the volunteers here happen to work for MathWorks, and of those who do, the ones who are developers happen to be mostly on the Simulink side it appears.
The Active volunteers are mostly in Western Europe, or Eastern North America, with a small number of outliers (e.g., Central North America). The largest portion of answers by far comes from a fairly small number of individual volunteers. There are no "shifts" or the like, nor has anything like that ever been attempted, and the population of active volunteers is too small for anything like that to be practical. About 7 active volunteers on average are handling 80% of the questions from the 56500 forum members.
채택된 답변
Friedrich
2012년 3월 14일
Hi,
the data type you use to pass the matrix down to the ML function is wrong. I think the function signature must be:
public Object[] matrica(int i, Object... os)
So Object and not int[][] is needed => Try
Object[] matrica1 = k.matrica(1, (Object)matrica);
댓글 수: 13
Friedrich
2012년 3월 15일
Good morning,
I would say
int[][] out = (int[][])((MWNumericArray)matrica1[0]).toIntArray();
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Java Client Programming에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!