我矩阵
A = [123 123 123 99 99 99 32 32 32 40
40 40 22 22 34 34 34 152 152 152
92 92 92 91 91 91 146 146 146 119
3 3 96 96 96 136 136 136 68 68
]
B = [40 68 119]
如何用A中的零值替换为具有相同值的B.所需结果:
C = [123 123 123 99 99 99 32 32 32 0
0 0 22 22 34 34 34 152 152 152
92 92 92 91 91 91 146 146 146 0
3 3 96 96 96 136 136 136 0 0
]
谢谢......
答案 0 :(得分:2)
使用ismember
获取A
中B
的值的逻辑掩码,然后将其用作逻辑索引,使这些条目为零:
C = A; % define C equal to A
C(ismember(A,B)) = 0; % make elements from B equal to 0
或者,在一行中:对于A
中的1
和B
中的元素,0
乘以等于B
的掩码:
C = A.*~ismember(A,B); % multiply A by a mask to make elements from B equal to 0
答案 1 :(得分:1)
我开始走这条路:
C = A;
for i = 1:numel(B)
C(C == B(i)) = 0;
end
第三行使用逻辑索引 - C == 20
是逻辑矩阵,如果元素为20则为true,否则为false,C(C == 20) = 0
将真实元素设置为0
。