【问题标题】:Matlab loop optimization - Logical Indexing [duplicate]Matlab循环优化 - 逻辑索引[重复]
【发布时间】:2020-02-06 20:08:29
【问题描述】:

下面的 matlab 代码存在严重的性能问题。它运行但循环需要很多时间,我想优化它。谁能帮我把它重写为逻辑索引?

非常感谢!

j = 0

for i = 1:n
 if varA(i) < varB(i)
    varC(i) = varD(i);
 else
    varC(i) = varB(i);
    j = j + 1;
 end
end 

【问题讨论】:

  • 您能否提供更多关于varAvarBvarCvarD 外观的信息?
  • @Axel 它们是相当大尺寸的双类型矩阵变量
  • 我还没有机会。但我会尽快通知你@Axel

标签: matlab matrix optimization indexing


【解决方案1】:

通常你的循环应该等于下面的sn-p:

varC(varA < varB) = varD(varA < varB);
varC(varA >= varB) = varB(varA >= varB);

但是,我需要更多关于 varAvarBvarCvarD 的信息,以验证此解决方案是否有效。

【讨论】:

  • @Adriaan OP 已经回答输入是大尺寸的双数组。我针对各种双数组测试了这个答案。真的不明白你的顾虑。我刚刚写道,我无法“验证”它是否真的适用于 OP,因为我没有实际的数组。但是,没有理由假设它不起作用。我觉得将其标记为猜测答案是相当不礼貌的。
  • @Axel 有效!谢谢你的帮助我真的很感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多