当数组从java传递到matlab函数时,如何使用java中的matlabcontrol API获取matlab中的数组



我在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

最新更新