2012-08-08 63 views

回答

3

这可以很容易地使用逻辑索引来解决:

x = [0 0 0 1 1 0 5 0 7 0] 
y = [0 2 0 1 1 2 5 2 7 0] 

idx = ~(x==0 & y==0); 

x2 = x(idx) 
y2 = y(idx) 

阵列idx将具有0其中xy均为零和1否则。使用这样的数组进行索引时,它只会返回索引为true的值(1)。

编辑:如果你想迭代它,只需在其周围放一个for循环。这并不困难,但是对于一个模糊的描述,我只能给出模糊的代码(或者对于单元阵列来说非常复杂的代码,这对于实际需要来说太复杂了)。

for i = ... 
    x = % dependent on i 
    y = % dependent on i 

    idx = ~(x==0 & y==0); 

    x2 = x(idx) 
    y2 = y(idx) 
end 
+0

并原谅我,但我不擅长matalb,但如果我想迭代这有我的X和我次Y,我怎么可以做for循环? – berndh 2012-08-10 08:19:56

2

你可以写:

idx = any([x;y]); 

甚至更​​好

idx = x|y; 

然后应用逻辑索引选择的元素:

x2 = x(idx) 
y2 = y(idx) 
0

为阳性的紧凑型替代方案使用逻辑索引克,另外只和就地修改:

idx = ~(x+y); 
x(idx)=[]; 
y(idx)=[]; 

编辑:对于有符号整数,其中在两个数组对应的元素可能加起来为零,则可以通过

idx = ~(abs(x)+abs(y)) 
避免 ==~=比较
+0

如果它们是肯定的(或者同一个符号),它们不能加起来为零。尽管如此,对于一个通用的解决方案,为了避免“〜=”或“==”比较,你可以使用'idx =〜(abs(x)+ abs(y))' – gevang 2012-08-12 01:09:02