从Matlab读取数据到Java中。

6

我正在尝试将Matlab生成的矩阵读入Java的二维数组中。 到目前为止,我一直在使用jmatio将Java中的数据写入.mat文件(成功),但是现在无法反向操作。 我已经使用以下代码将矩阵导入到MLArray对象中:

matfilereader = new MatFileReader("filename.mat");
MLArray j = matfilereader.getMLArray("dataname");

除了获取其字符串表示形式之外,我无法访问数据本身。我找不到任何关于此的示例或库的文档,实际上我编写了一个函数来将整个字符串解析为double[][]数组,但这仅适用于矩阵小于1000项的情况...

非常感谢您分享任何经验或提示。

Amir


你尝试过使用MLDouble子类而不是MLArray吗?你在MATLAB中检查过mat文件是否保存正确吗? - yuk
你是怎么想使用MLDouble而不是MLArray的?MatfileReader只有返回变量为MLArrays的API。至于文件方面,是的,我尝试了几个,它们都没问题。 - Amir
我想将MLArray转换为MLDouble。你能试一下 MLDouble j = (MLDouble)matfilereader.getMLArray("dataname"); 吗? - yuk
是的,那个可行!然后你可以通过坐标访问所有单元格,甚至有一个内置函数“.createArray”。非常感谢。 - Amir
2个回答

2

matfilereader.getMLArray有几个子类,可以访问MLArray对象中的不同类型的数据。

要表示double数组,您可以将MLArray转换为MLDouble:

MLDouble j = (MLDouble)matfilereader.getMLArray("dataname");

0

我不熟悉那个工具,但它相当老旧。尝试将保存文件的版本降级为较旧的 *.mat 文件,并查看您的结果是否会改变。也就是说,在保存您的 *.mat 文件时添加 '-v7.0''-v6' 标志。

示例代码:

save filename var1 var2 -v7.0

或者

save filename var1 var2 -v6

我现在已经尝试过了,结果还是一样。但问题并不是出现了错误或与文件有关,而是要使用哪个代码将MLArray转换为Java变量呢? - Amir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接