MATLAB測位プログラミングの 基礎とGT (1) 東京海洋大学産学官連携研究員 高須 知二 内容 • 主にMATLABで書かれた測位解析プログ ラムGT(GpsTools)を例題にして、 MATLABプログラミングの基礎及び測位 計算への応用について解説する。 • GTの応用についても簡単な例を基に解説 する。 目的 • MATLABを有用な研究開発ツールとして 使いこなすことにより – 本当にやりたい研究内容に早くたどり着く – 退屈で(無駄な)プログラミング作業を減らす • 最小限の手間で最大限の研究成果を出す。 予定 (1) • • • • • • 4月 MatlabとGTの紹介 5月 Matlabプログラミング基礎 6月 Matlab行列演算プログラミング 7月 Matlab 2D/3Dグラフィックス 8月 Matlabプログラム開発・デバッグ手法 9月 Matlab性能向上とMEX他言語I/F 内容 (2) • • • • • • 10月 GTの仕様と測位アルゴリズム 11月 GTの内部構造と実装 12月 GTライブラリ・ツールの応用 1月 GTの応用:測位演算プログラム (1) 2月 GTの応用:測位演算プログラム (2) 3月 まとめと今後の課題 MATLAB (1) • • • • MATrix LABoratory Mathworks社 (米) 数値解析ソフトウェア 科学技術計算、信号処理、データ解析、シ ミュレーション、可視化(Visualization)... • Toolbox、Simlink etc • 類似処理系: Octave,Scilab,... MATLAB (2) • プログラム言語としての特徴 – – – – – – Cに似た制御構文 (if, while, for, switch...) インタプリタ型言語 弱い型付 行列計算に特化した構文規則 m-file単位でのプログラム管理 バージョンアップで機能拡張 (互換性問題) (セル配列、構造体、オブジェクト指向、etc ...) MATLAB (3) • 数値解析システムとしての特徴 – 数値解析ライブラリ 線形代数、特殊関数、統計解析、信号処理、 積分、微分方程式、補間 etc... – グラフィックスライブラリ – 拡張ライブラリ集(Toolbox) – デバッガ、プロファイラ、GUIツール – コンパイラ MATLAB (3) • 長所 – プログラム開発効率 – 結果の可視化が容易 • 短所 – 処理系が高価/プロプライエタリSW – 可搬性 (プログラム実行にMatlabが必要) – プログラム実行効率 MATLABの利用 • 研究開発 ○ – – – – 最終目的物はプログラムそのものではない 仕様が曖昧、仕様がどんどん変わる 早く成果すなわち解析結果が出ればよい プロトタイプ開発 • 実製品 △ – 最終目的物はプログラムそのもの – 実行効率、低コスト、可搬性、品質保証 C vs MATLAB (1) 九九演算表を出力する : C: void kuku(void) { int i,j; for (i=1;i<=9;i++) { for (j=1;j<=9;j++) { printf("%2d ",i*j); if (j==9) printf("\n"); } } } MATLAB : function kuku (1:9)'*(1:9) C vs MATLAB (2) 線形方程式(Y=AX)の解を求める : C+LAPACK : int solve(const double *A, const double *Y, int n, int m, double *X) { int info,*ipiv=(int *)malloc(sizeof(int)*n); double *B=(double *)malloc(sizeof(double)*n*n); memcpy(B,A,sizeof(double)*n*n); memcpy(X,Y,sizeof(double)*n*m); dgetrf_(&n,&n,B,&n,ipiv,&info); if (!info) dgetrs_("N",&n,&m,B,&n,ipiv,X,&n,&info); free(B); free(ipiv); return info; } MATLAB : function X=solve(A,Y) X=A\Y; GT (1) • MATLABをベースに書かれた測位解析プ ログラム • 最新: ver.0.6.3 (2006/7) • ライバル: Bernese、GIPSY/OASIS-II • 主な応用: 精密測位(PPP)、衛星軌道決定、対流圏遅 延推定、etc ... GT (2) • プログラム規模: m-file 22.1K, C-MEX 5.9K (ver.0.6.1) • プログラム開発戦略 – – – – (1) MATLABプログラム開発 (2) 性能ボトルネックの識別 (3) ライブラリのm-file→C-MEXへの書き換え (4) 解析エンジンの全Cプログラム化(未) GT (3) • MATLAB用共通ライブラリ: – – – – – – – 入出力:RINEX , SP3, IONEX, PCV etc 測位演算 精密補正モデル 大気圏モデル 衛星運動モデル 座標系、時刻系変換 地図描画、特殊グラフ描画、GUI etc GTライブラリ利用例 RINEX読み込み/単独測位計算/結果グラフ化 : td=caltomjd([2007,1,1]); t=0:30:86370; sats={}; for i=1:31,sats={sats{:},sprintf('GPS%02d',i)}; end [nav,inav]=readnav(td,t,sats,'0053'); [obs,iobs]=readobs(td,t,sats,'0053'); [tt,j]=unique(iobs(:,1)); j=[0,j']; for i=1:length(j)-1 k=j(i)+1:j(i+1); p=pointpos(td,tt(i),obs(k,3),iobs(k,2:3),nav,inav); pos(i,:)=eceftogeod(p); end figure, hold on, grid on, box on plot3(pos(:,1),pos(:,2),pos(:,3),'.');
© Copyright 2024 ExpyDoc