
MATLAB【統計学講義応用】
MATLAB
MATLABは高度な数値計算、可視化、そしてプログラムが扱える科学技術計算のための高級言語であるにもかかわらず、その使いやすさや、生産性の高さは他に類を見ず、前提知識をさほど必要とせず、数式を直感的にプログラミングできます。
このため、制御や信号処理等の工学分野のみならず、ケミカル、医学、バイオインフォマティックスや経済分野まで幅広い分野で活用されており、さらに応用範囲は広がっています。
MATLABは、その使いやすい言語をベースに、グラフィカルにモデルを構築できるSimulinkと共に、様々な応用に応じたツールボックス群から構成されています。
C言語に似た入出力インターフェースや、Handle Graphicsによる強力なビジュアライゼーションを利用でき、統合型の開発環境を備えたプログラミング言語です。
インタプリタ言語
MATLABはインタプリタ型言語です。
コンパイルを必要とせず、プログラムを1行ずつ解釈しながら実行していきます。
一般にインタプリタ型言語は低速であると言われていますが、MATLABは数値演算速度に関しては決して低速ではありません。
ただし、インタプリタ型言語であるため、for文、while文等の制御文を多用するとパフォーマンスが悪くなるので注意を要します。
また、ほとんどのインタプリタ型言語がそうであるように、ポインタや参照といったメモリのアドレスを直接操作する機能は備わっていません。
充実した行列計算環境
MATLABのMATはMatrix(行列)を意味することからもわかるとおり、MATLABは全ての変数を行列あるいは配列として扱い、スカラー変数も1×1の行列と解釈します。
MATLABはこの行列変数を処理する充実した機能を多く持ち合わせています。その機能の一部は以下です。
@行列の宣言が不要で、行列のサイズをはじめに指定しておく必要がありません。例えばC=A*Bという行列演算をするとき、MATLABはA*Bの行列サイズを計算しCという配列を自動的に生成する。
A行列計算が容易で、例えば、行列AとBの加算や乗算はA+B、A*Bのように標記できます。
B行列の参照、一部切り出し等が容易であり、例えば、行列Aの2-4行目、3-6行目を抜き出しBに代入するには、B=A(2:4, 3:6);とするだけでよいのです。
C数学関数のほとんどが行列に対応しています。例えば、sqrt(A)とすると行列Aの全ての要素の平方根が求まります。
D逆行列や固有値計算など行列演算用のライブラリが充実しており、しかも計算精度が高いです。
強力なグラフィックス
MATLABのもう一つの魅力は、変数を可視化するグラフィックス機能です。
x−yプロットの基本的な2次元グラフから、3次元グラフィックスに至るまで、考えられるほとんど全てのグラフ描画関数が備わっています。
実際の応用として、音声や画像も処理することができ、ムービーにも対応しています。
さらにはMRI画像のボリュームレンダリングや、3次元メッシュの描画など、コンピュータグラフィックス分野のデータも処理することができます。
さらに興味深いのはユーザーが視覚的に理解しやすいグラフィカルユーザーインターフェイスも簡単に構築することができ、高度なアプリケーションも開発できます。
エクセルや他のアプリケーションとの連携も可能です。ユーザーの利用環境によっては、説明通りに動作しない可能性もありますが、これを解決するのもより深い理解につながります。
理工系のいろいろな物理現象をコンピュータで計算を行う場合、時系列の変化量を(連続データではなく)離散データとして配列の中にデータを格納して用いる場合が多いでしょう。
これらのデータを処理するためにプログラムを開発することになると思います。
今の開発環境では、主にC言語を用いていろいろな解析プログラムを作成しますが、このC言語はもともとアセンブラプログラマー向けに開発された言語です。
プログラムの組み方によって実行速度が速いプログラムも作成することが可能ですが、本職のプログラマーでない限りかなりな労力を必要になります。
しかも、C言語は技術計算に関するデータ構造や演算子を実装していませんので、技術計算用の関数群を必要に応じて作成しなければなりません。
これに対してMATLABは行列を取り扱う問題に対して、当然、最も力を発揮します。また、パワフルなグラフィック機能も標準で装備されており、解析結果をその場で視覚的に表現することができます。
★★統計学目次★★
