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 矩阵中所有点到直线的距离时,并将距离保存到另一个矩阵,用的是循环,计算起来很慢;大伙帮我看看有没有优化的方法,谢谢
展开
 我来答
chouchouNUDT
2013-01-25 · TA获得超过1706个赞
知道小有建树答主
回答量:2954
采纳率:50%
帮助的人:1057万
展开全部
当然可以优化,不过需要对pointlinedistance函数进行相应的调整。
更多追问追答
追问
function [m]=pointlinedistance(a,b,c)
n_z=cross(a-b,c-b);
m=((n_z*n_z')/((a-b)*(a-b)'))^0.5;
end
糊涂了忘记贴了不好意思。请指点。
追答
cross是计算什么的函数?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式