如何从细胞中提取元素



我有一个单元格,它由许多不同维度的不同数组组成。例如,这可能是我的手机:

A = {[-1] [144x1 double] [-1] [331x1 double] [-1] [431x1 double] [-1] [512x1 double]}

我想用单元格中包含的所有数据做一个直方图。我试着在2点做一个牢房:

B = cell2mat(A);

为了提取数据,然后做直方图,但它给出了这个错误:

??? Error using ==> cat
CAT arguments dimensions are not consistent.
Error in ==> cell2mat at 81
m{n} = cat(2,c{n,:});
Error in ==> function at 156
B = cell2mat(A);

我还尝试创建一个带有循环的矩阵:

for j=1:length(A)
B = [B; A{j}]
end

但这里的问题是,MATLAB对所有数组使用相同的维度,并用0填充空白。

我该如何正确地做到这一点?

如果所有单元格都包含大小为1 x n的矩阵,并且单元格数组的大小也是1 x n,则cell2mat将起作用。如果所有矩阵的大小都是n×1,并且单元阵列的大小是n×。

因此,在您给定的示例中,请简单地尝试:

B = cell2mat(A');

更一般地说,循环将适用于具有一般n x m内容的单元格阵列,只需稍作修改:

B = [];
for n=1:length(A)    
B = [B; A{n}(:)]
end

最新更新