当我想编写简洁/可读的代码时,我遇到的一个常见问题:

我想用依赖于先前值的值更新与逻辑表达式匹配的向量的所有值。

例如,将所有偶数条目加倍:

weights = [10 7 4 8 3];
weights(mod(weights,2)==0) = weights(mod(weights,2)==0) * 2;
% weights = [20 7 8 16 3]

是否可以以更简洁的方式编写第二行(即避免重复使用逻辑表达式,例如其他语言中的 i+=3 for i=i+3 )。如果我经常在不同的上下文/变量中使用这种向量操作,并且我有很长的条件,我觉得我的代码没有它应有的简洁和可读性。

谢谢!

最佳答案

怎么样

ind = mod(weights,2)==0;
weights(ind) = weights(ind)*2;

这样您就可以避免两次计算索引并且易于阅读。

关于arrays - 使用非常量值更新具有逻辑索引的数组中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32883299/

10-12 12:50