1

私はこのようなセル配列を持っています:

    a = {[1 2 3]; [4 5]; [6 7 8 9]};

たとえば、すべてのセルの先頭に10を挿入して、次のようにします。

    >> a{:}

    ans =

        10     1     2     3

    ans =

        10     4     5

    ans =

        10     6     7     8     9

forループなしでそれを行うことは可能ですか?

4

1 に答える 1

6

CELLFUNは無名関数で使用できます。

b = cellfun(@(x)[10 x],a,'UniformOutput',0)

@tmpearceのコメントに答えるために、実行時間を測定するために簡単なスクリプトを使用しました。

a = {[1 2 3]; [4 5]; [6 7 8 9]};
tic
a = cellfun(@(x)[10 x],a,'UniformOutput',0)
toc
a = {[1 2 3]; [4 5]; [6 7 8 9]}; 
tic
for ii=1:numel(a)
    a{ii} = [10 a{ii}];
end
toc

結果:

Elapsed time is 0.002622 seconds.
Elapsed time is 0.000034 seconds.
于 2013-03-03T01:05:52.603 に答える