matlab不能设置为负数,-1
Matlab can not set to negative, -1
我想将 matrix/vector 中的某些值替换为 -1,但似乎不能。
x = [1 5 6; 2 4 3; 3 4 2; 4 2 1];
z = x(:,1) == 4 % get result I want
z =
0
0
0
1
changem(z,-1,0) % changem doesn't work
ans =
1
1
1
1
如果我在 changem 中创建数组也是如此
changem(z,[-1 1],[0 1])
ans =
1
1
1
1
这也不行
z(1) = -1
z =
1
0
0
1
为什么我不能操纵向量来获得以下值
ans =
-1
-1
-1
1
这种方法可行,但如果能回答上一个问题就更好了,谢谢。
z = x(:,1) ~= 4;
z = z * -1;
z = changem(z,1,0)
ans =
-1
-1
-1
1
逻辑运算 returns 来自二进制集 {0, 1} 的值。如果你想要这些作为 {-1, +1} 一个简单的转换是乘以 2,然后减去 1。
z = (x(1, :) == 4)*2 - 1
我不知道 changeme
是什么,因此无法评论该函数的结果。
在 Matlab 和各种环境(例如 C、C++)中,零的计算结果为逻辑假,除零以外的任何内容都计算为逻辑真。例如在 Matlab 中,logical(x)
会将双精度数组 x
转换为 binary/logical 数组。 logical(-1)
的计算结果为 1(即真)。如果 z
是逻辑数组并且您进行赋值:
z(1) = -1;
双精度值 -1
被转换为二进制值,即 true
(即 1),因为除 0 之外的所有值都转换为真 1。然后将 1 分配给第一个z
的索引。一切正常。
我想将 matrix/vector 中的某些值替换为 -1,但似乎不能。
x = [1 5 6; 2 4 3; 3 4 2; 4 2 1];
z = x(:,1) == 4 % get result I want
z =
0
0
0
1
changem(z,-1,0) % changem doesn't work
ans =
1
1
1
1
如果我在 changem 中创建数组也是如此
changem(z,[-1 1],[0 1])
ans =
1
1
1
1
这也不行
z(1) = -1
z =
1
0
0
1
为什么我不能操纵向量来获得以下值
ans =
-1
-1
-1
1
这种方法可行,但如果能回答上一个问题就更好了,谢谢。
z = x(:,1) ~= 4;
z = z * -1;
z = changem(z,1,0)
ans =
-1
-1
-1
1
逻辑运算 returns 来自二进制集 {0, 1} 的值。如果你想要这些作为 {-1, +1} 一个简单的转换是乘以 2,然后减去 1。
z = (x(1, :) == 4)*2 - 1
我不知道 changeme
是什么,因此无法评论该函数的结果。
在 Matlab 和各种环境(例如 C、C++)中,零的计算结果为逻辑假,除零以外的任何内容都计算为逻辑真。例如在 Matlab 中,logical(x)
会将双精度数组 x
转换为 binary/logical 数组。 logical(-1)
的计算结果为 1(即真)。如果 z
是逻辑数组并且您进行赋值:
z(1) = -1;
双精度值 -1
被转换为二进制值,即 true
(即 1),因为除 0 之外的所有值都转换为真 1。然后将 1 分配给第一个z
的索引。一切正常。