2016-05-30 57 views
0

我有下面的代码被执行数千次。通过使用Profiler,我将第二行(new_inds=...)标识为整个代码中最耗时的行。有没有更好/更快的方法来做这个操作?在Matlab中加快索引查找的好做法是什么?

for j=1:length(cls) 
    new_inds=[sti(:).time]==i & [sti(:).cluster]==cls(j); 
    % more code here 
    % 
    % 
    prob(j)=... 
end 
pr=prod(prob); 

回答

2

没有看到更多的代码,其难度肯定的告诉,但我希望它可以加速这一过程:

indexArg2 = [sti(:).cluster]; 
index1 = [sti(:).time]==i 

for j=1:length(cls) 
    new_inds=index1 & indexArg2==cls(j); 
    % more code here 
    % 
    % 
    prob(j)=... 
end 
pr=prod(prob); 

我的建议在这里是走索引不属于零部件与j环外的j相关。

P.S.有一种说法,你应该使用iijj作为计数器而不是ij(因为它们表示复数)。我已阅读(但从未见过证明)使用iijj快于ij ...

相关问题