Matlab 计算一个3d 矩阵中所有点到直线的距离<-程序优化
%%difinitionclear;x1=1;x2=100;nx=100;y1=50;y2=50;ny=100;z1=41;z2=60;nz=100;matrx1=ran...
%% difinition
clear;
x1=1;x2=100;nx=100;
y1=50;y2=50;ny=100;
z1=41;z2=60;nz=100;
matrx1=rand(nx,ny,nz);
% 所有点的坐标生成[X,Y,Z] = meshgrid(1:1:nx, 1:ny,1:nz);% e.g.% pointApositionX=Y(1,50,40);
% pointApositionY=X(1,50,40);
% pointApositionZ=Z(1,50,40);
% 穿过两点的所有x点xCross=linspace(x1,x2,nx);% 定义直线两段点
a=[x1 y1 z1];b=[x2 y2 z2];
%=========
%--matrxDisMatrix
matrxDisMatrix=rand(nx,ny,nz);
for i=1:nx
for j=1:ny
for k=1:nz
pointijk=[Y(i,j,k), X(i,j,k) ,Z(i,j,k)];
[m]=pointlinedistance(a,b,pointijk);% m is the distance matrxDisMatrix(i,j,k)=m;
end
end
end
===========这里计算一个3d 矩阵中所有点到直线的距离时,并将距离保存到另一个矩阵,用的是循环,计算起来很慢;大伙帮我看看有没有优化的方法,谢谢 展开
clear;
x1=1;x2=100;nx=100;
y1=50;y2=50;ny=100;
z1=41;z2=60;nz=100;
matrx1=rand(nx,ny,nz);
% 所有点的坐标生成[X,Y,Z] = meshgrid(1:1:nx, 1:ny,1:nz);% e.g.% pointApositionX=Y(1,50,40);
% pointApositionY=X(1,50,40);
% pointApositionZ=Z(1,50,40);
% 穿过两点的所有x点xCross=linspace(x1,x2,nx);% 定义直线两段点
a=[x1 y1 z1];b=[x2 y2 z2];
%=========
%--matrxDisMatrix
matrxDisMatrix=rand(nx,ny,nz);
for i=1:nx
for j=1:ny
for k=1:nz
pointijk=[Y(i,j,k), X(i,j,k) ,Z(i,j,k)];
[m]=pointlinedistance(a,b,pointijk);% m is the distance matrxDisMatrix(i,j,k)=m;
end
end
end
===========这里计算一个3d 矩阵中所有点到直线的距离时,并将距离保存到另一个矩阵,用的是循环,计算起来很慢;大伙帮我看看有没有优化的方法,谢谢 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询