在MATLAB中将不规则大小的单元阵列归零

时间:2013-09-19 09:38:49

标签: arrays matlab cell

我有一个不规则大小的单元格数组M,如:

>> M

    M = 
        [1x7 double]
        [1x9 double]
        [1x14 double]
        [1x6 double]

我想将单元格的所有元素设置为零而不循环遍历它们。 我已经尝试使用交易,正如建议here所示,在这种情况下,单元格的所有数组都具有相同的维度,但没有成功。

有关如何优雅地完成它的任何想法,例如cellfun? 提前谢谢;)

2 个答案:

答案 0 :(得分:3)

这个怎么样:

MM = cellfun(@(c) zeros(size(c)), M, 'UniformOutput',false);

如果您只想“清零”某些单元格,则可以应用仍然应用索引:

M(idx) = cellfun(@(c) zeros(size(c)), M(idx), 'UniformOutput',false);

for循环也不是那么糟糕:

for i=1:numel(M)
    M{i}(:) = 0;
end

答案 1 :(得分:2)

尝试:

M2 = cellfun(@(c)(zeros(size(c))), M, 'UniformOutput', false)