Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 通过跟踪x-y坐标进行减法_Matlab - Fatal编程技术网

Matlab 通过跟踪x-y坐标进行减法

Matlab 通过跟踪x-y坐标进行减法,matlab,Matlab,我有一组数组: 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]; 及 通过跟踪x-y坐标,必须减去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]; 您可以使用ismember功能在z中获取元素的标记: a1=[x1.',y1.']; a2=[x2.',y2.']; [~,ix]=ismember

我有一组数组:

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];

通过跟踪x-y坐标,必须减去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];

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

a1=[x1.',y1.'];
a2=[x2.',y2.'];
[~,ix]=ismember(a2,a1,'rows')
z1(ix)=z1(ix)-z2
要使用
ismember
,将创建两个矩阵
a1
a2
,其中包含行中的坐标。然后使用带有
'rows'
选项的
ismember
获取索引


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

什么?我不知道这些数字如何给出你想要的结果。你能解释一下吗?为什么需要
x2
y2
?只需使用
x2
就可以知道在
z
的何处减去
z2
。也许我不明白……x1和y1代表一个点,z1代表该点的某个值,类似地,对于x2和y2,定义一个点,z2代表某个值。现在我需要把两个点匹配起来,如果它们匹配的话,那么减去z作为匹配的坐标。在我的例子中,6,7坐标是匹配的,因此需要通过减去来修改相应的z值,即z1-z2.uhhh,我也不知道,因此从抽象的演绎点,您指定了x2=y2=[6 7];因此,用z中的第6和第7个元素减去z2(也就是[2])?那么当x2!=y2?还有,x1和y1的点是什么?实际上两个曲面接触,x,y表示曲面上的点,z高度,现在如果两点的坐标匹配,那么只减去z值,而不是x和y。是的,我认为@Daniel的解是正确的。我想我们对这个问题的理解是一样的。谢谢!这正是我想要的。非常感谢!!
a1=[x1.',y1.'];
a2=[x2.',y2.'];
[~,ix]=ismember(a2,a1,'rows')
z1(ix)=z1(ix)-z2