索引到单元格数组

时间:2016-03-04 16:34:16

标签: matlab indexing cell-array

拜托,我需要任何人的帮助。我有一个包含许多行和两个列的单元格数组。第二列具有不同长度的元素。有些是一,二,三和四个元素。我想使用cell2mat将第二列中的这些元素从单元转换为double,并将其存储在一个新变量中。我遇到了这个错误" Assignment的非单例rhs维度比非单例下标更多"。我已经尝试了很多次来解决这个问题,但我没有解决方案。有人可以帮忙吗?我的代码可以在下面看到。

for i = 1:length(p)
     ps(i,:) = cell2mat(p{i,1}(1,2))
end

1 个答案:

答案 0 :(得分:0)

您需要为输入数据指定列范围(显式),MATLAB将自动展开ps以适当地容纳您的数据(用零填充空单元格);

for k = 1:numel(p)
    data = cell2mat(p{k,1}(1,2));
    ps(k, 1:numel(data)) = data;
end

显然,由于每次循环迭代都会更改ps的大小,因此会产生一些性能影响。

如果您愿意,可以预先分配ps这样的内容

allData = cellfun(@(x)cell2mat(x(1,2)), p(:,1), 'uniform', 0);
ps = zeros(numel(allData), max(cellfun(@numel, allData)));