我计划多次删除矩阵的第一行,并且想知道这样做的最佳/最有效方式。

我知道我可以做这样的事情

  M(1,:)=[]

要么
M = M(2:end)

但我不确定哪种方法最好,或者是否还有另一种更好的方法。

最佳答案

嘿,刚刚用tictoc测试了这两种方法
这是我使用的代码:

A=rand(100,100000);
tic
a=A(2:end,:);
t1=toc
tic
A(1,:)=[];
t2=toc

结果如下:
t1 =

    0.0603

t2 =

    0.0744

如果使用更长的列,它将变得更加明显:
A=rand(10000,100);
t1 =

    0.0083

t2 =

    0.0124

因此,保存要保留的列似乎更快。

编辑

有人评论说tictoc在毫秒域中不是“可信赖的”,因此建议使用循环多次运行该代码。但是结果不会改变
A=rand(100,100000);
size_A=size(A);
tic
for k=1:1:100
    A1=A;
    A1=A1(2:end,:);
end
t1=toc
tic
for k=1:1:100
    A1=A;
    A1(1,:)=[];
end
t2=toc

结果是:
t1 =

    7.5237

t2 =

   15.2234

关于matlab - 在Matlab中从矩阵删除第一行的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24862456/

10-11 19:37