我在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
替换它,并用0
替换另一个矩阵中的相应数字(即使不是100
(。
期望输出:
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
使用布尔运算符|
(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 ]