matlab 在三维空间的三边定位算法模拟如何写?function [locx,locy]=triposition(xa,ya,da,xb,yb,db,xc,yc,dc)% 三点定位法 %%输入:% 1.参考节点A(xa,ya),B(xb,yb),C(xc,yc)% 2.定位节点D(locx,locy)到这三点的距离分别
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 13:27:11
matlab 在三维空间的三边定位算法模拟如何写?function [locx,locy]=triposition(xa,ya,da,xb,yb,db,xc,yc,dc)% 三点定位法 %%输入:% 1.参考节点A(xa,ya),B(xb,yb),C(xc,yc)% 2.定位节点D(locx,locy)到这三点的距离分别
matlab 在三维空间的三边定位算法模拟如何写?
function [locx,locy]=triposition(xa,ya,da,xb,yb,db,xc,yc,dc)
% 三点定位法 %
%输入:
% 1.参考节点A(xa,ya),B(xb,yb),C(xc,yc)
% 2.定位节点D(locx,locy)到这三点的距离分别为da,db,dc
%返回:
% (locx,locy)为计算的定位节点D点的位置坐标
%
syms x y %f符号变量
%--------------求解方程组------------------------------------
f1='2*x*(xa-xc)+xc^2-xa^2+2*y*(ya-yc)+yc^2-ya^2=dc^2-da^2';
f2='2*x*(xb-xc)+xc^2-xb^2+2*y*(yb-yc)+yc^2-yb^2=dc^2-db^2';
[xx,yy]=solve(f1,f2,x,y); %解关于x,y的符号方程组,得到解的符号表示,并存入xx,yy
px=eval(xx); %解的数值px(1),px(2)
py=eval(yy); %解的数值py(1),py(2)
locx=px;
locy=py;
——————————————————————————
上面这个是别人写的二维的,我想扩展到三维空间,要再加一个锚节点.
解法如图,逆矩阵解XYZ这里不会啊.求大虾帮我改改.
matlab 在三维空间的三边定位算法模拟如何写?function [locx,locy]=triposition(xa,ya,da,xb,yb,db,xc,yc,dc)% 三点定位法 %%输入:% 1.参考节点A(xa,ya),B(xb,yb),C(xc,yc)% 2.定位节点D(locx,locy)到这三点的距离分别
按照楼主的算法给楼主编了一个函数,楼主将它存为一个m文件,在matlab的命令窗口即可运行.
这里主要用到一个解线性方程组的方法楼主可以主要一下.其实matlab的在矩阵方面是十分强大方便的.例如此处可以直观的用A\b来解决你的方程,即可理解为向量b左除一个矩阵A,这就是你要的解.(你这里因为A的逆矩阵在b的左面相乘,如果是右面当然还有右除即b/A).
function [locx,locy,locz]=fourposition(xa,ya,za,da,xb,yb,zb,db,xc,yc,zc,dc,xd,yd,zd,dd)
A = [(xa-xd),(ya-yd),(za-zd);
(xb-xd),(yb-yd),(zb-zd);
(xc-xd),(yc-yd),(zc-zd)];
A = 2*A;
b = [xa*xa-xd*xd+ya*ya-yd*yd+za*za-zd*zd+dd*dd-da*da;
xb*xb-xd*xd+yb*yb-yd*yd+zb*zb-zd*zd+dd*dd-db*db;
xc*xc-xd*xd+yc*yc-yd*yd+zc*zc-zd*zd+dd*dd-dc*dc];
ans = A\b;
locx = ans(1);
locy = ans(2);
locz = ans(3);
end