在MATLAB中说我有一个数组,并创建了一个逻辑向量,其中包含我要删除的元素的true
个条目,例如称之为del_index
。要做到这一点,下列方法之一是更好/更快和/或更好吗?
arr(del_index) = [];
OR
arr = arr(~del_index);
答案 0 :(得分:1)
两者看起来都不错,所以让我们测试速度。
time1=0;
th=0.5
for ii=1:100000
arr=rand(10000,1);
del_index=arr<th;
tic
arr(del_index) = [];
time1=time1+toc;
end
time2=0;
for ii=1:100000
arr=rand(10000,1);
del_index=arr<th;
tic
arr = arr(~del_index);
time2=time2+toc;
end
display(['arr(del_index) is ', num2str(time1/time2), ' times slower'])
我尝试使用th
的不同值,从0到1,我通常得到这个值。所以是的,第二个更好。
arr(del_index) is 1.5136 times slower