我有一个包含许多不同尺寸的不同阵列的单元格。例如,这可能是我的单元格:
A = {[-1] [144x1 double] [-1] [331x1 double] [-1] [431x1 double] [-1] [512x1 double]}
我想用单元格中包含的所有数据做直方图。我试过做一个cell2mat:
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 :(得分:3)
如果所有单元格都包含大小为1 x n的矩阵,并且单元格数组的大小也为1 x n,则cell2mat
将起作用。如果所有矩阵的大小为n x 1且单元阵列的大小为n x 1,则情况也是如此。
因此,在您给出的示例中,请尝试简单:
B = cell2mat(A');
更一般地说,循环适用于具有通用n x m内容的单元格数组,稍作修改:
B = [];
for n=1:length(A)
B = [B; A{n}(:)]
end