在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
有人可以解释一下这里发生了什么,以及我需要做些什么才能得到我想要的结果?
答案 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;
应该可以正常使用。