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