Matlab用矩阵替换零值

时间:2016-10-23 03:25:02

标签: matlab matrix replace

我矩阵

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
     ]
谢谢......

2 个答案:

答案 0 :(得分:2)

使用ismember获取AB的值的逻辑掩码,然后将其用作逻辑索引,使这些条目为零:

C = A; % define C equal to A
C(ismember(A,B)) = 0; % make elements from B equal to 0

或者,在一行中:对于A中的1B中的元素,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