arrays - 使用非常量值的逻辑索引更新数组中的值

标签 arrays matlab

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

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

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

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/

相关文章:

objective-c - 如何在 Objective-c 中将数组声明为常量?

matlab - 如何在终端中更改Matlab设置(对于history.m)?

matlab - 比 cell2mat 走得更快

image-processing - 图像的降维方法

.net - 将数据从 Matlab 应用程序服务器传输到 F#

c++ - 有没有办法在C++中静态初始化动态分配的数组?

jquery 不适用于 id 作为数组,例如 : $ ("#pageid[0]"). val ("1234");

arrays - 为什么我的第一个哈希值在 Perl 中消失了?

php - 如何存储巨大的数组,用于图形

linux - 从 Matlab 中调用 R