Matlab/C プログラミングTIPS
Matlab/C Programing TIPS
Home

Matlab測位プログラミングの基礎とGT
Matlab programing for positioning and GT

2007年度東京海洋大ゼミ資料

その(1) (ppt 33KB)
その(2) (ppt 37KB) 6/20追加
その(3) (ppt 65KB) 6/20追加


Matlab小物ツール

moveax.m ver.1.0 (2006/10/13)

グラフ軸へ移動/拡大/縮小機能を追加します。本プログラムを実行すると、current axesのXY軸上の左ボタンドラッグで軸移動、右ボタンドラッグ(またはコントロールーキー+ドラッグ)で軸の拡大/縮小が可能となります。axesハンドル h を指定する場合は moveax(h) の構文を使用して下さい。

本頁に記載のプログラムは全てフリーです。コピー、改変、配布等自由に行ってかまいません。


MatlabプログラムTIPS

1. if文における比較判定

Matlabにおいて以下の文は等価ではないので、if文の判定を逆に書き換える場合、充分注意する必要がある。

if a==1, disp('OK'); else disp('NG'); end % (1)
if a~=1, disp('NG'); else disp('OK'); end % (2)

これはaが空や行列の場合があり、行列とスカラーの比較演算結果は行列になり、if文の判定は、空ではなく、かつ全要素が0以外にならないと真と見なされないからである。従って、

(1) NG, (2) OK (a=[])
(1) NG, (2) OK (a=[1,2;1,1])

の様にaが空や行列の場合、結果が異なる。またNaN==NaNは偽となるので以下も意味が異なる。従って普通は(4)を使わなければならない。

if a==nan, disp('NAN'); else disp('OK'); end % (3)
if isnan(a), disp('NAN'); else disp('OK'); end % (4)

さて、それでは(3),(4)で、a=[] の場合どういう結果になるだろう。予想してから実際実行してみると面白い。