【发布时间】:2016-11-05 01:41:09
【问题描述】:
我有一个 nx3 数组 A。我想创建一个单元格B 这样:
for i=1:size(A,1)
B{i}=A(i,:);
end
我可以在没有 for 循环的情况下以矢量化方式执行此操作,或者在 Matlab 中比这更快吗?
编辑:
我想到这个问题是因为我想在A 的每一行上调用一个函数。该函数仅输出一个标量。所以一旦我形成了B,我就可以打电话给cellfun:
C=cellfun(@func,B)
我做到了。 for 循环似乎仍然更好。
b=rand(1000000,15);
tic
for i=1:size(b,1)
f{i}=b(i,:);
end
toc
tic
e=mat2cell(b, ones([1 size(b,1)]), [ size(b,2) ]);
toc
OUTPUT:
Elapsed time is 1.386777 seconds.
Elapsed time is 2.237526 seconds.
【问题讨论】:
标签: arrays matlab vectorization cell-array