我有一个像这样的单元格数组:
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循环可以做到吗?
答案 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.