2

次のような不規則なサイズのセル配列 M があります。

>> M

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

セルをループせずに、セルのすべての要素をゼロに設定したいと思います。セルのすべての配列が同じ次元であるが成功しなかった場合にここで提案されているように、私はすでに取引を使用しようとしました。

たとえば 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 に答える