哪种语法更适合在MATLAB中删除数组元素?

时间:2015-06-30 19:48:29

标签: arrays matlab

在MATLAB中说我有一个数组,并创建了一个逻辑向量,其中包含我要删除的元素的true个条目,例如称之为del_index。要做到这一点,下列方法之一是更好/更快和/或更好吗?

arr(del_index) = [];

OR

arr = arr(~del_index);

1 个答案:

答案 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