Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 范围内的元素和两点之间的距离_Matlab_Loops_Matrix_Range_Element - Fatal编程技术网

Matlab 范围内的元素和两点之间的距离

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

我有一个带有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;
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');