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

我在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
zydx123 回答:如何根据任一向量上的条件修改多个向量?

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

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进行逻辑索引。如果您实际上有两个以上的向量,这将很灵活:

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 ]
本文链接:https://www.f2er.com/3144870.html

大家都在问