Arrays 如何在MATLAB中将矩阵的单元数组转换为列矩阵?
我有一个矩阵单元数组,如下所示:Arrays 如何在MATLAB中将矩阵的单元数组转换为列矩阵?,arrays,matlab,matrix,Arrays,Matlab,Matrix,我有一个矩阵单元数组,如下所示: G = Columns 1 through 6 [507x1 double] [255x1 double] [130x1 double] [67x1 double] [36x1 double] [19x1 double] Columns 7 through 9 [11x1 double] [6x1 double] [4x1 double] 这意味着矩阵位于单元格数组中。矩阵G中总共有507+255+
G =
Columns 1 through 6
[507x1 double] [255x1 double] [130x1 double] [67x1 double] [36x1 double] [19x1 double]
Columns 7 through 9
[11x1 double] [6x1 double] [4x1 double]
这意味着矩阵位于单元格数组中。矩阵G
中总共有507+255+130+67+36+19+11+6+4=1035个元素。我可以使用G{I}
命令提取任何单元格。但是,我需要在单列或行矩阵中包含所有1035个元素。我试过cell2mat(G)
,但不起作用
我可以在这里做些什么来创建一个包含所有其他矩阵的单一矩阵?用于该矩阵并垂直连接,或沿第一个维度连接:
G = cat(1, G{:});
语法G{:}
产生了一种称为。这相当于您执行以下操作:
G = cat(1, G{1}, G{2}, ..., G{9});
您不必输入用于连接的所有单个单元格元素,而是执行G{:}
为您解包所有这些元素
小调
cell2mat
基本上以我上面提到的方式执行cat
。如果您查看cell2mat
的源代码,它有很多健全性检查,但函数的核心只是使用cat
并利用逗号分隔的列表。我不知道为什么cell2mat
对您不起作用。用于此,并垂直连接,或沿第一维度连接:
G = cat(1, G{:});
语法G{:}
产生了一种称为。这相当于您执行以下操作:
G = cat(1, G{1}, G{2}, ..., G{9});
您不必输入用于连接的所有单个单元格元素,而是执行G{:}
为您解包所有这些元素
小调
cell2mat
基本上以我上面提到的方式执行cat
。如果您查看cell2mat
的源代码,它有很多健全性检查,但函数的核心只是使用cat
并利用逗号分隔的列表。我不知道为什么cell2mat
对你不起作用。用什么方法cell2mat
不起作用?按预期运行。cell2mat
以何种方式不工作?假设错误是因为他的单元格数组是多维的,不能转换成矩形数组,中间的重塑(G,1,[])代码>调用应该足够了。@excaza是的,这肯定会起作用,但是OP的帖子中给出的详细输出表明所有单元格元素都是列向量。还是一个很好的观察!假设错误是因为他的单元数组是多维的,不能转换成矩形数组,那么中间的重塑(G,1,[])代码>调用应该足够了。@excaza是的,这肯定会起作用,但是OP的帖子中给出的详细输出表明所有单元格元素都是列向量。还是一个很好的观察!