当我想编写简洁/可读的代码时,我遇到的一个常见问题:
我想用依赖于先前值的值更新与逻辑表达式匹配的向量的所有值。
例如,将所有偶数条目加倍:
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/