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 回答