我在学习Python,找一个实例练习,但是只有MATLAB的代码,这一段看不懂。
function o = PosNegFmap(x)
s = sign(x);
y = sqrt(s.x);
o = [y.(s == 1) y.*(s == -1)];
end
主要是第三行的o = [y.(s == 1) y.(s == -1)];这段。
我知道(s == 1)是s向量里的每一个元素和1比较,相同为1,不同为0,输出的向量与y点乘,但是前后的y.(s == 1)和y.(s == -1)他们是什么关系呢
o = [y.*(s == 1) y.*(s == -1)];
吗?
y.*(s == 1)
这里面, (s == 1)
为 一个逻辑型,里面等于 1
的值为 1
,否则为 0
;比如,s = [1 0 1 -1 0 -1];
,那么 s == 1
的值为 [1 0 1 0 0 0];
, 然后 y
再和这个结果相乘
同理,s == -1
的值为 [0 0 0 1 0 1];
, 然后 y
再和这个结果相乘
假设:
y = [1 2 3 4 5 6]';
s = [1 0 1 -1 0 -1]';
此时,o 的值为:
1 0
0 0
3 0
0 4
0 0
0 6