因为想把样本筛选一下,所以简单的分类器先跑了一下,没想到跑完分类器在对样本筛选时的时间大大超过了样本进分类器的时间,这个显然不能达到我要的节省时间目的。于是分析了一下matlab中各个环节的时间成本,一看吓一跳,循环中对矩阵操作,尤其是对矩阵中很多行置空的操作直接让时间爆掉。可是反过来一想,我其实想昂要留下来的少,置空的多,那我还不如只保留留下的,那些不要的不要管了。时间成本一下子从一分钟变成了0.01s甚至更少的时间了。
原来
if score<threshold
d.score(j,:)=[];
d.num(j,:)=[];
d.class(j)=[];
end
现在
if score>=threshold
dn.score(j,:)=d.score(j,:);
dn.num(j,:) = d.num(j,:);
d.class(j)=d.class(j);
end
因为我要过滤掉的有95%以上,因此基本上我对矩阵的操作减少到了没有了。