求这段MATLAB代码的意思

我在学习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