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