2

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

>> M

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

我想将单元格的所有元素设置为零而不循环它们。我已经尝试过使用 deal,正如这里所建议的那样,对于单元格的所有数组都具有相同维度但没有成功的情况。

知道如何优雅地做到这一点,例如 cellfun 吗?预先感谢 ;)

4

2 回答 2

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
于 2013-09-19T09:47:11.747 回答
2

尝试:

M2 = cellfun(@(c)(zeros(size(c))), M, 'UniformOutput', false)
于 2013-09-19T09:46:32.377 回答