Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将二维单元矩阵转换为二维数值矩阵_Arrays_Matlab_Cell Array - Fatal编程技术网

Arrays 将二维单元矩阵转换为二维数值矩阵

Arrays 将二维单元矩阵转换为二维数值矩阵,arrays,matlab,cell-array,Arrays,Matlab,Cell Array,我是MATLAB新手,对如何从单元格数组中获取数字数组感到困惑。根据MATLAB,我得到了一些矩阵结果,我得到以下结果: >> size(result) ans = 1 15 >> result ans = Columns 1 through 15 [3] [15] [1x2 double] [13] ... \\ Omitted for clarity >> iscell(result) ans =

我是MATLAB新手,对如何从单元格数组中获取数字数组感到困惑。根据MATLAB,我得到了一些矩阵
结果
,我得到以下结果:

>> 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
由十四个单元素列和一个多元素列组成

我检查了文档,根据文档,有一种方法叫做
cell2mat
。不幸的是,它不能完全满足我的需要,因为它输出一个1x16数字数组:

>> cell2mat(result)
ans =
    3    15    10    7    13 ... \\ Omitted for clarity
在本例中,10和7是组成
[1x2 double]
的元素,只是MATLAB出于某种原因在打印单元阵列时没有指出这一点


问题:在保留分组的同时,是否有办法将此矩阵转换为数组的数字数组?具体来说,我希望得到形式为[3],[15],[10,7],[13],…]的东西,并且这些是数字。这可能吗?值得一提的是,我使用matlabcontrol中的一些Java代码使用MATLAB,该软件似乎需要实值数组。

在MATLAB中没有“Java类型”数组。你可以拥有matlab自己的单元数组,这就是你现在拥有的。此外,matlab中的单元数组没有“直接”转换为java数据结构(查看有关将matlab数据转换为java的更多信息)

很快,我就可以看到您可以考虑的三种可能的方法:

  • 结果
    转换为数组的字符串表示形式,将该字符串传递给java,然后将其转换回所需的任何结构
  • 由于单元格作为对象数组(即
    Object[]
    )进入java,您可以在java中使用这些数组,使它们成为您想要的对象
  • 您还可以直接在matlab中生成java结构,即在将它们传递到java类/方法之前。因此,您可以将
    结果
    单元格转换为一些java数组(例如,数组的java数组)或任何东西。这是可能的,因为在matlab中可以使用java代码和java数据结构。查看有关在matlab中使用java的更多信息