Matlab:使用矩阵作为掩码来执行元素运算

时间:2015-08-05 15:54:53

标签: matlab

在Matlab中,我有两个矩阵:一个是整数,x,另一个是布尔,y

x =

     2     4     2
     3     3     1
     4     1     5

y =

     0     0     1
     1     1     0
     1     0     1

我现在要做的是将x的一些元素分配给5,并且我想使用y作为掩码来确定哪些元素应该设置为5.所以元素有一个y中对应的0值应保留为x中的值,但y中对应值为1的值应设置为5.因此,输出应为:< / p>

     2     4     5
     5     5     1
     5     1     5

我尝试了以下内容:

x(y) = 5

这给了我错误:

Subscript indices must either be real positive integers or logicals.

我也尝试过:

y(x) = 5

这给了我以下内容:

 5     5     1
 5     1     0
 5     0     1

有人可以解释一下这里发生了什么,以及我需要做些什么才能得到我想要的结果?

3 个答案:

答案 0 :(得分:3)

您所犯的错误是因为y显然是type double,而在这种情况下,它应该是type logical

你可以尝试:

x(logical(y))=5

希望这有帮助

答案 1 :(得分:0)

它不是一个奇特的解决方案,但会解决你的问题

>> x = [  2     4     2;3     3     1;4     1     5];
y = logical([  0     0     1;1     1     0;1     0     1]);
f = x(:);
f(y(:)) = 5;
x = reshape(f,size(x))

x =

     2     4     5
     5     5     1
     5     1     5

>> 

答案 2 :(得分:-1)

x(find(y)) = 5;应该可以正常使用。