我有一个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.
答案 0 :(得分:0)
您可以使用mat2cell
来设置单元格矩阵B
,然后您可以将B
的行调用到cellfun
。
答案 1 :(得分:0)
尝试使用mat2cell
函数:
B=mat2cell(A, ones(1, size(A,1)), size(A,2));