資源描述:
《三邊測量法的MATLAB定位程序說明.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、三邊測量法的MATLAB定位程序說明(MATLAB7.0下):一、由三個(gè)文件組成,分別是?1)triposition.m??2)find_three_p.m?3)locac3.m?三個(gè)源文件內(nèi)容見后面二。?1、組成圖示?圖示如下(注意鼠標(biāo)處分別打開了上面的三個(gè)源文件:):2.運(yùn)行主文件?首先切換到主程序locac3.m的界面,如下:?點(diǎn)擊工具運(yùn)行,等待一段時(shí)間,得到運(yùn)行結(jié)果如下:??同時(shí)在MATLAB命令窗口得到:????二、三個(gè)源文件的內(nèi)容%一、m函數(shù)triposition.m文件內(nèi)容%一、m函數(shù)*****************tripositio
2、n.m**************************%function[locx,locy]=triposition(xa,ya,da,xb,yb,db,xc,yc,dc)%?????????????三點(diǎn)定位法?????????????????????????%%輸入:%??1.參考節(jié)點(diǎn)A(xa,ya),B(xb,yb),C(xc,yc)%??2.定位節(jié)點(diǎn)D(locx,locy)到這三點(diǎn)的距離分別為da,db,dc%返回:%??(locx,locy)為計(jì)算的定位節(jié)點(diǎn)D點(diǎn)的位置坐標(biāo)%symsxy??%f符號變量%--------------求解方程
3、組------------------------------------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);%解關(guān)于x,y的符號方程組,得到解的符號表示,并存入xx,yypx=eval_r(xx);?%解的數(shù)值px(1),px(2)py=eval_r(yy);?%解的數(shù)值py(1),py(2)locx=p
4、x;locy=py;??%二、m函數(shù)find_three_p.m文件內(nèi)容function[xa,ya,xb,yb,xc,yc]=find_three_p(x,y)?%從N點(diǎn)中隨機(jī)選出不同的三點(diǎn)%輸入:x,y是N點(diǎn)的坐標(biāo)%輸出:xa,ya,xb,yb,xc,yc%????為選出的任意三點(diǎn)的坐標(biāo)len=length(x);%取一點(diǎn)t=fix(len*rand(1,1))+1;ma=t;xa=x(t);ya=y(t);%取第二點(diǎn)while(1)???t=fix(len*rand(1,1))+1;???if(t~=ma)????????????mb=t;???
5、??xb=x(t);?????yb=y(t);??????????break;???end???end%取第三點(diǎn)while(1)???t=fix(len*rand(1,1))+1;???if(t~=ma)&&(t~=mb)????????????mc=t;?????xc=x(t);?????yc=y(t);??????????break;???end???end?%三、主文件locac3.m文件內(nèi)容%*********locac3.m****************%---采用三邊定位法對未知節(jié)點(diǎn)定位---------clear;len=1000;%參
6、考節(jié)點(diǎn)數(shù)maxx=1000;%參考節(jié)點(diǎn)分布的最大橫坐標(biāo)maxy=1000;%參考節(jié)點(diǎn)分布的最大縱坐標(biāo)%------參考點(diǎn)[cx,cy]-----------------cx=maxx*rand(1,len);cy=maxy*rand(1,len);plot(cx,cy,'k^');%參考節(jié)點(diǎn)圖%--------未知節(jié)點(diǎn)(mx,my)-----------mlen=200;?%未知點(diǎn)數(shù)mx=maxx*rand(1,mlen);my=maxy*rand(1,mlen);holdon;plot(mx,my,'go');%盲節(jié)點(diǎn)圖%---------定位估計(jì)-
7、---------------------wucha_p=0.00001;??%定位誤差forp=1:mlen%對每個(gè)未知盲節(jié)點(diǎn)????[xa,ya,xb,yb,xc,yc]=find_three_p(cx,cy);%從參考點(diǎn)中任意選出三點(diǎn)????da=sqrt((mx(p)-xa)^2+(my(p)-ya)^2);????db=sqrt((mx(p)-xb)^2+(my(p)-yb)^2);????dc=sqrt((mx(p)-xc)^2+(my(p)-yc)^2);????[locx(p),locy(p)]=triposition(xa,ya,da
8、,xb,yb,db,xc,yc,dc);%計(jì)算定位坐標(biāo)????????????plot(loc