2016-03-07 77 views
1

我已设置的数组:减法通过跟踪xy坐标

x1=[1 2 3 4 5 6 7 8 9]; 
y1=[1 2 3 4 5 6 7 8 9]; 
z1=[2 2 2 2 2 9 6 2 2]; 

x2=[6 7]; 
y2=[6 7]; 
z2=[2 2]; 

通过跟踪xy坐标,与z阵列必须被减去,以便输出将是

x=[1 2 3 4 5 6 7 8 9]; 
y=[1 2 3 4 5 6 7 8 9]; 
z=[2 2 2 2 2 7 4 2 2]; 
+0

什么?我不知道这些数字如何给出你想要的结果。你可以解释吗?你为什么需要'x2'和'y2'?只要用'x2'就可以知道'z'上的哪个位置可以减去'z2'。也许我只是不明白..... –

+0

x1和y1代表一个点,z1代表某个值,类似地,x2和y2定义了一个点,z2定义了一些值。现在我需要匹配两个点中的点,如果它们匹配,那么将匹配的坐标减去z。在我的情况下,6,7个坐标是匹配的,所以需要通过减去z1-z2来修改相应的z值。 –

+0

uhhhh,我也不明白,所以从一个抽象的推论点上,你指定了x2 = y2 = [6 7];因此你可以用z2(这是[2 2])减去z中的第6和第7个元素?那么当x2!= y2时会发生什么?另外,x1和y1有什么意义? – GameOfThrows

回答

3

您可以使用在z中获得元素的标记210功能:

a1=[x1.',y1.']; 
a2=[x2.',y2.']; 
[~,ix]=ismember(a2,a1,'rows') 
z1(ix)=z1(ix)-z2 

要使用ismember两个矩阵a1a2创建女巫包含以行的坐标。然后ismember'rows'选项用于获取索引。

当一个点存在于x1/y1中不存在的x2/y2中时,上面的代码将失败。

+0

好。我们对这个问题有相同的理解。 – GameOfThrows

+0

谢谢!这正是我所期待的。非常感谢!! –