我在java中使用matlabcontrol
API来连接matlab和Java。我正在使用返回Feval调用matlab函数并传递函数名称和对象数组。
爪哇代码
Object[] path = new Object[2];
path[0]=imgp1; //imgp1,imgp2 path of image file
path[1]=imgp2;
Object[] out = proxy.returningFeval("main_single",1,path);
现在在 MATLAB 方面如何检索这个数组的元素,即在这种情况下,我想提取 path[0] 和 path[1] 并将其存储在某个变量中。
矩阵代码
function rslt = main_single(path)
imgp1 = path(0);
imgp2 - path(1);
谁能告诉我该怎么做..?
最后我找到了将参数从 Java 传递到 Matlab.insted 的新方法,传递对象数组,我们也可以像
String in = img1path;
String in1 = img2path;
Object[] out = proxy.returningFeval("main_single", 1, in,in1);
其中"main_single"是 MATLAB 中的函数名称,1 是从 Matlab 返回给 Java 的值数量,in,in1 是要传递的字符串。
Matlab代码看起来像..
function out = main_single(str,str1)
img1 = str;
img2 = str1;
out = img2;
end
返回的结果将存储在 out[] 中,并且可以通过类型转换像普通 Java 一样显示。
如果有人知道如何从数组中检索数据,那么请发布它。
我使用以下简单代码将 1D 和 2D 数组从 java 转换为 Matlab:
function [ res ] = j2mArray( A )
%just for 1d and 2d data.
s=size(A);
res=zeros(s(2),size(A{1},2));
for i=1:s(2)
for j=1:size(A{1},2)
res(i,j)=A{i}(j);
end
end