在 Matlab 中加快索引查找速度的良好实践是什么?



我有以下代码被执行了数千次。通过使用分析器,我将第二行(new_inds=...)确定为整个代码中最耗时的一行。有没有更好/更快的方法来执行此操作?

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

如果没有看到更多的代码,很难确定,但我希望这会加快速度:

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循环之外。

附言有一种观点认为,您应该使用 iijj 作为计数器,而不是 ij(因为它们表示复数)。 我读过(但从未见过证明)使用 iijjij 更快......

相关内容

最新更新