如何在Matlab中向单元格数组的每个单元格插入一个数字?

时间:2013-03-03 01:01:53

标签: matlab cell-array

我有一个像这样的单元格数组:

    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循环可以做到吗?

1 个答案:

答案 0 :(得分: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.