MATLAB-向量相关

MATLAB-向量相关,matlab,coordinates,distance,correlation,depth,Matlab,Coordinates,Distance,Correlation,Depth,我有两个不同大小的向量XYZ。我们可以称之为Data1和Data2,其中: Data1 = [1000 3:55 2000; ... 950 2200 4.5; ... 1050 2350 5.5; ... 1025 2500 6; ... 1075 2600 7; ... 1000 2700 8]; Data2 = [1000 2650 7.95; ... 1000 2750 8.1

我有两个不同大小的向量XYZ。我们可以称之为Data1和Data2,其中:

Data1 = [1000 3:55 2000; ...
          950 2200 4.5; ...
         1050 2350 5.5; ...
         1025 2500 6; ...
         1075 2600 7; ...
         1000 2700 8];

Data2 = [1000 2650 7.95; ...
         1000 2750 8.16; ...
         1000 2700 9; ...
         1025 3000 10];
点之间的最小可接受差值为距离位置(X,Y)100米,深度(Z)为0.2米

在这种情况下,向量之间的点将是p_Data1=[1000 2700 8]和p_Data2=[1000 2650 7.95],因为距离是可接受的,深度是最近的

有人知道一个函数可以做这种关联来帮助我吗?我认为在Matalab中有一些函数可以解决这个问题,而且性能很高,因为我将对数千个点进行计算

我目前正在使用嵌套循环,但性能非常差,因为我计算所有距离,然后计算每个点的深度之间的所有差异,并过滤矩阵

简言之,我想找到两个不同大小的向量之间的深度越来越低的点,到定义的范围

谢谢你的帮助

Data1=[950 2200 4.5。。。
Data1 = [950 2200 4.5; ...
         1050 2350 5.5; ...
         1025 2500 6; ...
         1075 2600 7; ...
         1000 2700 8];

Data2 = [1000 2650 7.95; ...
         1000 2750 8.16; ...
         1000 2700 9; ...
         1025 3000 10];

vec1 = Data1(:,3);
vec2 = Data2(:,3);
[p,q] = meshgrid(vec1, vec2);
output1 = 0; %initial set

while output1 == 0
sub = [abs(p(:)-q(:))];
[M,I] = min(sub);
IndData1 = floor(I/4);
IndData2 = mod(I,IndData1);

%this basically computes the smallest possible Z 
%Check if it works for condition 2:
checkcolumn1 = abs(Data1(IndData1,1) - Data2(IndData2,1));
checkcolumn2 = abs(Data1(IndData1,2) - Data2(IndData2,2));
if checkcolumn1 < 200 && checkcolumn2 <200
   output1 = Data1(IndData1,:);
   output2 = Data2(IndData2,:);
else
min(sub) = 1000000 %huge high number to basically remove the min
end
end
1050 2350 5.5; ... 1025 2500 6; ... 1075 2600 7; ... 1000 2700 8]; 数据2=[1000 2650 7.95。。。 1000 2750 8.16; ... 1000 2700 9; ... 1025 3000 10]; vec1=Data1(:,3); vec2=数据2(:,3); [p,q]=meshgrid(vec1,vec2); 输出1=0;%初凝 而output1==0 sub=[abs(p(:)-q(:)]; [M,I]=min(sub); IndData1=楼层(I/4); IndData2=mod(I,IndData1); %这基本上是计算最小可能的Z %检查其是否适用于条件2: checkcolumn1=abs(Data1(IndData1,1)-Data2(IndData2,1)); checkcolumn2=abs(Data1(IndData1,2)-Data2(IndData2,2));
如果checkcolumn1<200&&checkcolumn2,那么您正在寻找同样符合x和y要求的最近深度测量值吗?
Data1
中存在错误。我认为应该是
10003.552000而不是
3:55
。嗯,这是一个愚蠢的问题,但我认为你不需要关联。根据你所说的,你可以简单地从数据2中减去数据1,它返回一个矩阵,取它的绝对值(等于取每个元素的绝对值),然后过滤条件,即第1列和第2列(称为xy)必须小于200,第3列必须小于0.2,我做错什么了吗?