在Matlab中,我想用其他值替换某个值。
我知道我可以这样做:
X(X==0) = -1
如果我想将所有出现的 0 替换为 1。
我有一个数组 X,其中包含范围在 0 到 9 之间的数字。我想创建一个新数组 Y,其中如果 X(i) == 某个给定数字(例如 5),则 Y 的第 i 个值为 1,否则为 -1。于是我写了一段代码:
Y = (X == 5);
Y(Y==0) = -1;
第一行工作正常。它将所有带有“5”的单元格投影为 1,否则投影为 0,因为它是逻辑运算。然后,如果它是 0,我想用 -1 替换它,但第二行以某种方式使数组的所有值都变为 1。有谁知道为什么会发生这种情况?谢谢!
为什么你的方法不起作用确实有点奇怪。原因是等式的左边是完全逻辑的,右边也是逻辑的,并且
logical(-1) = 1
所以:
Y = (X == 5) %// Y is logical
Y(Y == 0) = -1 %// Y is logical, Y == 0 is logical,
%// -1 is casted to logical and logical(-1) = 1
因此,将您的第一个逻辑数组转换为双精度数组,并且它可以工作。
Y = (X == 5) %// Y is logical
Y = double(Y) %// Y is double
Y(Y == 0) = -1 %// Y is double, Y == 0 is logical
Example:
X = randi(9,20,1);
Y = (X == 5)
Y = double(Y)
Y(Y == 0) = -1
out = [X Y]
out =
7 -1
3 -1
5 1
7 -1
9 -1
9 -1
5 1
2 -1
2 -1
3 -1
8 -1
3 -1
8 -1
3 -1
9 -1
4 -1
2 -1
3 -1
6 -1
5 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)