我是MATLAB的新手,对于如何从单元格数组中获取数值数组感到困惑。根据MATLAB,我有一些矩阵result
,我得到以下内容:
>> size(result)
ans =
1 15
>> result
ans =
Columns 1 through 15
[3] [15] [1x2 double] [13] ... \\ Omitted for clarity
>> iscell(result)
ans =
1
因此看起来结果是尺寸为1 x 15的二维单元阵列,但其中还有一个子阵列(?),由[1x2 double]
表示。在这个特定的例子中,我们假设这些[1x2 double]
元素中只有一个。换句话说,result
由十四个单元素列和一个多元素列组成。
我检查了文档,根据this page,有一个名为cell2mat
的方法。不幸的是,它不能完全满足我的需要,因为它输出1x16数字数组:
>> cell2mat(result)
ans =
3 15 10 7 13 ... \\ Omitted for clarity
在这个例子中,10和7是组成[1x2 double]
的元素,只是因为任何原因MATLAB在打印单元格数时没有表明。
问题:有没有办法可以将此矩阵转换为数组的数组,同时保留分组?具体来说,我希望得到一些[[3],[15],[10,7],[13],...]的形式,并将它们作为数字。这可能吗?对于它的价值,我正在使用MATLAB和matlabcontrol中的一些Java代码,而且该软件似乎需要实值数组阵列。
答案 0 :(得分:1)
没有' java-type' matlab中的数组数组。您可以拥有matlab自己的数组单元数组,这就是您现在所拥有的。也没有直接的'将matlab中的单元数组转换为java数据结构(有关将matlab数据转换为java的更多信息,请查看here)。
很快,我可以看到三种可能的方法:
results
转换为数组的字符串表示形式,将此字符串传递给java,然后将其转换回您想要的结构。 Object[]
)进入java,您可以在java中使用这些数组,使它们成为您想要的。 results
单元转换为某些java数组(例如,数组的java数组)或其他任何内容。这是可能的,因为在matlab中你可以使用java代码和java数据结构。有关在matlab中使用java的更多信息,请查看here。