【问题标题】:Copying array contents to cell in vectorised way MATLAB以向量化方式将数组内容复制到单元格MATLAB
【发布时间】: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


    【解决方案1】:

    你可以用mat2cell得到一个单元格矩阵B,然后你可以把B的行调用成cellfun

    【讨论】:

      【解决方案2】:

      试试mat2cell函数:

      B=mat2cell(A, ones(1, size(A,1)), size(A,2));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-01
        相关资源
        最近更新 更多