我有一个不规则大小的单元格数组M,如:
>> M
M =
[1x7 double]
[1x9 double]
[1x14 double]
[1x6 double]
我想将单元格的所有元素设置为零而不循环遍历它们。 我已经尝试使用交易,正如建议here所示,在这种情况下,单元格的所有数组都具有相同的维度,但没有成功。
有关如何优雅地完成它的任何想法,例如cellfun? 提前谢谢;)
答案 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)