将单元格数组列转换为矩阵列

时间:2015-02-25 17:03:10

标签: matlab

我有一个单元格数组(16x5),我想提取单元格数组每列中保存的所有值,并将它们放入矩阵中的列中,以便保留列(即每个列的新矩阵列)单元阵列)。

这样做的最佳方式是什么?

我试过了:

for k=1:Samples
data(k,:) = [dist{:,k}];
end

但是这会返回错误

Subscripted assignment dimension mismatch.

但是我不确定为什么。

EDIT - 单元阵列结构: enter image description here

1 个答案:

答案 0 :(得分:1)

由于您的循环代码有效,我认为错误是由于data预分配的维度与逗号扩展dist列的长度不匹配(Matlab将使用显式索引生成矩阵)但不是:运算符)。 您只需要在以逗号分隔的扩展后获取数据的长度:

nElem   = numel([dist{:,1}]);
Samples = size(dist,2);
data    = zeros(Samples,nElem);  
for k=1:Samples
  data(k,:) = [dist{:,k}];
end

或者如果你想在列中

data = zeros(nElem,Samples);  
for k=1:Samples
  data(:,k) = [dist{:,k}]';
end