【问题标题】:How to get elements of an array in matlab when an array is passed from java to matlab function using matlabcontrol API in java?java - 使用java中的matlabcontrol API将数组从java传递到matlab函数时,如何在matlab中获取数组的元素?
【发布时间】:2015-02-28 01:42:35
【问题描述】:

我在java中使用matlabcontrol API来连接matlab和java。我正在使用返回Feval 并传递函数名称和对象数组来调用 matlab 函数。

Java 代码

 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] 并将其存储在某个变量中。

Matlab 代码

function rslt =  main_single(path)

imgp1 = path(0);
imgp2 - path(1);

谁能告诉我如何做到这一点..?

【问题讨论】:

  • matlab 使用从 1 开始的索引。 class(path) 返回什么?
  • 它返回 true 或 false。但是 main_single(path) 是在 matlab 中将数组作为参数的正确方法吗?

标签: java arrays matlab matlabcontrol


【解决方案1】:

最后我找到了将参数从 Java 传递到 Matlab 的新方法。在传递 Object 数组的方法中,我们也可以像传递字符串一样

   String in = img1path;
   String in1 = img2path;
   Object[] out = proxy.returningFeval("main_single", 1, in,in1);

其中“main_single”是matlab中的函数名。 1 是 matlab 将返回多少个值到 java 中,in1 是要传递的字符串。

Matlab 代码看起来像..

function out = main_single(str,str1)
  img1 = str;
  img2 = str1;
  out = img2;
end

返回的结果会存储在 out[] 中,可以通过 typecasting 像普通 java 一样显示。

如果有人知道如何从数组中检索数据,请发布。

【讨论】:

    【解决方案2】:

    我使用以下简单代码将一维和二维数组从 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
    

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多