Matlab 范围内的元素和两点之间的距离
我有一个带有x,y和z坐标的53534x3矩阵。 我想找到如下范围内的矩阵元素:Matlab 范围内的元素和两点之间的距离,matlab,loops,matrix,range,element,Matlab,Loops,Matrix,Range,Element,我有一个带有x,y和z坐标的53534x3矩阵。 我想找到如下范围内的矩阵元素: % coordinate range; x1(x<-25|x>0); x2(x<0|x>25); y1(y<-40|y>0); y2(y<0|y>40); z1(z<45|z>17); z2(z<17|z>82); 我需要找出两点之间的距离 % define points; xd=x2-x1; yd=y2-y1; zd=z2-z1; Dist
% coordinate range;
x1(x<-25|x>0);
x2(x<0|x>25);
y1(y<-40|y>0);
y2(y<0|y>40);
z1(z<45|z>17);
z2(z<17|z>82);
我需要找出两点之间的距离
% define points;
xd=x2-x1;
yd=y2-y1;
zd=z2-z1;
Distance=sqrt(xd*xd+yd*yd+zd*zd);
循环是否更有效?您不需要循环。MATLAB非常有效地处理向量和矩阵 如果矩阵是
a
:
point1 = a( (a(:,1)<-25 | a(:,1)>0) & ...
(a(:,2)<-40 | a(:,2)>0) & ...
(a(:,3)< 45 | a(:,3)>17) ,:);
point2 = a( (a(:,1)< 0 | a(:,1)>25) & ...
(a(:,2)< 0 | a(:,2)>40) & ...
(a(:,3)<17 | a(:,3)>82) ,:);
一般情况下,如果需要点1
和点2
中所有点之间的距离,可以使用PDIST2功能:
Distance = pdist2(point1, point2, 'euclidean');
谢谢我试过了,它说“使用矩阵维度的错误必须一致。”并且(第9行)xd=point2(:,1)-point1(:,1);。声明的点1=33683x1和点2=7585x1我非常感谢您的帮助:)点1和点2。我想这就是函数包含错误的地方。此外,我在这里发布了类似的问题。您可以查看响应。啊,在获取
点1
和点2
的矩阵索引中发现错误。更正。我认为矩阵维数的问题是z1(z0);z2(z82);。我这里的意思是z在45到82之间。我说得对吗?
xd = point2(:,1)-point1(:,1);
yd = point2(:,2)-point1(:,2);
zd = point2(:,3)-point1(:,3);
Distance=sqrt(xd.^2+yd.^2+zd.^2);
Distance = pdist2(point1, point2, 'euclidean');