我计划多次删除矩阵的第一行,并且想知道这样做的最佳/最有效方式。
我知道我可以做这样的事情
M(1,:)=[]
要么
M = M(2:end)
但我不确定哪种方法最好,或者是否还有另一种更好的方法。
最佳答案
嘿,刚刚用tic
和toc
测试了这两种方法
这是我使用的代码:
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
因此,保存要保留的列似乎更快。
编辑
有人评论说
tic
和toc
在毫秒域中不是“可信赖的”,因此建议使用循环多次运行该代码。但是结果不会改变。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/