从java传递一百万个数字到matlab?

时间:2009-02-02 15:25:34

标签: java matlab double

我有一些代码在10.919秒运行。分析它显示10.182 s被浪费在

opaque.double

使用

时调用
jClass.GetArrays(jArray1,jArray2);

struct.prop1 = double(jArray1);
struct.prop2 = double(jArray1);

可以做些什么?我必须使用Java与外部API进行交互。


编辑:我使用了以下黑客:

struct.prop1 = cell2mat( cell( jArray1) ); 


并降至1.5秒/ 2.2秒

编辑:

使java返回长逗号分隔数组的字符串表示,然后使用

data = strread(char(jString),'%f','delimiter',',' );

产生了几乎可以忍受的表现

2 个答案:

答案 0 :(得分:3)

在这种情况下,问题在于使用盒装Java原语 - java.lang.Double

简单地将Java的签名从Double更改为double会导致Matlab无缝地使用数组而不会产生额外的开销。

答案 1 :(得分:1)

您可以考虑将其保存到文件中,然后在另一端读取它。它也可能同样很慢(特别是如果涉及网络),但它值得一试。

您也可以考虑将其转换为二进制数据blob,然后传递它,然后将其转换回来。

我有一种潜在的怀疑,即表现不佳,它会在自己的交易中传递数组的每个元素,而不是一次性传递。

- 亚当