如何根据任一向量的条件修改多个向量?

How do I modify multiple vectors based on a condition on either vector?

我在 MATLAB 中有两个向量:

AA = [1 2 3 5 6 7 100 1 4 5];
BB = [1 100 3 4 5 8 9 10 11 12];

两者长度相同。

如果数字100出现在任一向量中,我想将其替换为0和另一个矩阵中的相应数字(即使这不是100)用 0

期望的输出:

AA = [1 0 3 6 7 0 1 4 5];
BB = [1 0 3 4 5 0 9 10 11 12];

我正在努力寻找解决方案,我可以考虑创建第三个向量并尝试使用一些逻辑规则,但我似乎无法让它发挥作用。

CC = [AA' BB'];
% logical rules here

使用布尔运算符 |(或)获取索引:

AA = [1 2 3 5 6 7 100 1 4 5];
BB = [1 100 3 4 5 8 9 10 11 12];

ind = AA == 100 | BB == 100;
AA(ind) = 0
BB(ind) = 0

如果您确实从向量创建了一个矩阵,则可以使用 any 进行逻辑索引。如果您实际上有 2 个以上的向量,这很灵活:

C = [AA; BB]; % Each row is one of the original vectors
C( :, any(C == 100, 1)) = 0;

% C = [ 1     0     3     5     6     7     0     1     4     5
%       1     0     3     4     5     8     0    10    11    12 ]