鉴于,
a = [2 4 6 8 10 0 7 18 9 0 8 2 0 5];
b = [1 3 0 5 70 8 6 87 1 9 7 8 0 2];
我正在尝试删除对应的元素(在'a'和'b'中) 'a'或'b'中的'0'或小于'0',即我想要
% a = [2 4 8 10 7 18 9 8 2 5];
% b = [1 3 5 70 6 87 1 7 8 2];
我这样想 -
n = length(b);
a1 = [];
b1 = [];
for k = 1:n
if a(n) <= 0 || b(n) <= 0
a1 = [a; a(a > 0)] % eliminates 0 from a
b1 = [b; b(b > 0)] % eliminates 0 from b
end
end
任何帮助都会非常有用。
答案 0 :(得分:0)
使用find
:
a = [2 4 6 8 10 0 7 18 9 0 8 2 0 5];
b = [1 3 0 5 70 8 6 87 1 9 7 8 0 2];
A = a( find( a > 0 & b > 0 ) );
B = b( find( a > 0 & b > 0 ) );
甚至更快:
C = a( a > 0 & b > 0 );
D = b( a > 0 & b > 0 );
返回:
C =
2 4 8 10 7 18 9 8 2 5
D =
1 3 5 70 6 87 1 7 8 2
如果您可以肯定,没有值零以下,您也可以使用:
E = a( logical(a) & logical(b) );
F = b( logical(a) & logical(b) );
稍快一些,但也包含负值。
答案 1 :(得分:0)
执行此操作的有效且紧凑的方法是首先创建相关索引,以防止双重计算:
idx = a>0 & b>0
a = a(idx);
b = b(idx);