MATLABの使い方
ここではMATLABの使い方を学んでいきます。MATLABを使うには、デスクトップアプリケーションもしくはMATLAB Onlineというウェブアプリを用います。
導入するデスクトップアプリケーションは、Windows・macOS・Linuxでサポートされています。最新バージョンは、MATLAB R2022aとなります。MATLAB Onlineは、ライセンス契約をお持ちの方が対象です。以降では、初心者の方向けにMATLABの基本的な使い方について解説を進めていきます。
【参考】:System Requirements for MATLAB R2022a 【参考】:MATLAB Online
MATLABとは
MATLABとは、MathWorks社が開発提供する数値解析用ソフトウェアを指します。名称ですが、MATrix LABoratoryを略し命名されています。名称から分かる通り、配列を使った行列計算・ベクトル演算、そしてグラフ化を行うソフトウェアとして利用されます。
【参考】:MATLAB
MATLABの特徴
MATLABの特徴ですが、科学技術演算機能を用いたアルゴリズム開発・データ解析・可視化・数値計算に強みがあります。さらに特定分野向けにToolboxが用意されており、用途別に更なる効率的な利用に役立てることができます。
【参考】:MathWorks 製品・サービス 【参考】:MathWorks ソリューション
MATLABでできること
MATLABで何ができるかというと、あらゆる演算用途に利用できますので有償ライセンスとして十分な効果を挙げることができます。
具体的には、制御システムの設計やテスト・実装、ディープラーニングのデータ準備や設計・シミュレーション・展開、画像処理のアルゴリズム開発や動画の収集・処理・解析、機械学習におけるモデルの学習・パラメーター調整・展開、状態監視や予知保全ソフトウェアの開発・実装などに多岐に利用されています。
このほかロボティクスの自律型システム開発、信号や時系列データの解析・設計・シミュレーション、テストデータの収集や解析・検討・テスト、無線通信システムの作成や設計・テスト・検証などにも有効に役立てられています。
MATLABのライセンス体系
ソフトウェアはプロプライエタリであり、30日無料評価版が提供されます。評価後はライセンス購入が必要となります。学生向けには、学校のキャンパスライセンスが導入されていたり、学生向けライセンスパックが提供されます。
【参考】:MathWorks Pricing and Licensing 【参考】:学生向け MATLAB 【参考】:MATLAB Student R2022a の学生向けライセンス
MATLABの基本的な使い方
MATLABの基本的な使い方ですが、起動すると3つのペイン(パネル)から成るデスクトップアプリケーションが表示されます。 【参考】:MathWorks MATLAB 入門
表示されるペインは、「現在のフォルダー」「コマンド ウィンドウ」「ワークスペース」の3つです。操作は中央ペインに表示される「コマンド ウィンドウ」でコマンド実行を行うだけですので、初心者にも難しいことはありません。
プロンプトは ”>>” です。通常時の入力内容はエコー表示されますが、表示不要であれば行末にセミコロン (;)を付け表示を抑制することもできます。 【参考】:MATLAB 言語の基礎
コマンド ウィンドウで以下の様に入力してみると、操作の基本が理解できるでしょう。
>> A = 1
A =
1
>> B = 2;
>> C = A + B
C =
3
>>
MATLABのプログラミング言語
MATLABのプログラミング言語は、C言語やC++・Java・Pythonなどとのインターフェース機能を有するものの、独自仕様となります。そのプログラミング言語自体を、MATLABと呼びます。そのため、MATLABはデスクトップ統合開発環境(IDE)とプログラミング言語を合わせもっていると理解しましょう。
従来は、科学技術計算というとC言語やFORTRANが利用されていました。MATLAB登場以降は、MATLABの豊富な演算ライブラリによりプログラム開発が短期間で完了でき、利用者が増加しています。
MATLABの基本構文
他のプログラミング言語と同様に、代入演算子は ”=” で、変数に値を代入することができます。四則演算等の演算子(行列演算子)も違いがありませんが、MATLABの場合は、式には行列全体を含んだものとして扱われます。”%”以降行末までの内容が、コメントとなります。大文字と小文字は、区別されます。 【参考】:MATLABの式
テキストの場合はダブルクォーテーション(”)で括ります。文字配列の場合は、シングルクォーテーション(‘)で括ります。
MATLABの行列と配列
通常プログラミング言語では、1次元の行列を配列とし2次元以降は配列の組み合わせで表します。MATLABでは、行列と配列の区別なく多次元配列として取り扱います。
表記上も、全配列要素を角括弧([ ])で括るだけです。列の区切りは半角スペース( )、またはカンマ(,)を用います。行の区切りはセミコロン(;)です。以下が入力例です。
>> D = [1 2 3]
D =
1 2 3
>> E = [1 2 3; 4 5 6; 7 8 9]
E =
1 2 3
4 5 6
7 8 9
>>
【参考】:MATLABの行列および配列
MATLABの関数
MATLABでは、多くの組み込み関数が科学技術計算用に用意されています。例えば三角関数や指数関数・微分積分など良く用いられる関数から、より専門的なものまで多くの関数が用意されています。ユーザ定義関数は、”function”を宣言することで定義することができます。 【参考】:MATLAB — 関数
MATLABのmファイル
毎回、MATLABのコマンドウィンドウにプログラムを入力するのは大変です。そのために、プログラムをファイルに保存することができます。
保存されるmファイルは、MATLAB の実行文を含んだ拡張子 .m を持つテキストファイルです。テキストエディタで作成したり、編集したりすることができます。コマンドウィンドウで “edit ファイル名.m”でMATLABのテキストエディタが立ち上がります。
mファイルは、同じ作業を繰り返すスクリプトと、入出力パラメータを伴う関数の2種類に分類されます。実行するには、テキストエディタの実行アイコンをクリックするか、コマンドウィンドウで関数”run”で直接ファイル名を指定し、実行することもできます。 【参考】:MATLAB run
MATLABのpファイル
mファイルは編集可能であるため、第3者に配布すると編集や改ざんの恐れがあります。MATLABではファイル編集できないようにする機能があります。
pファイルは、公開ファイルとして編集できない実行用ファイルです。関数”pcode”を用い、mファイルから難読化したpファイルを生成することができます。 【参考】:MATLAB pcode
同一フォルダに .mと .pのそれぞれのファイルが格納されている場合、安全確保のため関数 “run”は拡張子 .pのpファイルを優先実行します。
MATLABのグラフ
MATLABではグラフ関数も整備されており、2次元は”plot”、3次元は”mesh”や”surf”などを用います。plotでは引数にXとYの配列を渡すことで、簡単に2次元プロットが作図表示できます。
meshでは3次元メッシュ表面プロットが簡単にできます。surfでは表面プロットを行うことができます。
【参考】:MATLAB 2 次元および 3 次元プロット 【参考】:MATLAB メッシュ プロットと表面プロットの作成 【参考】:MATLAB plot 【参考】:MATLAB mesh 【参考】:MATLAB surf
データの可視化はインタラクティブに行えるよう、メニューやアイコンに表示され効率的に行うことができます。 【参考】:MATLAB グラフィックス
MATLABのサンプルコード
公式サイトでは、MATLABのサンプルコードが例示されています。テーマ別に整理されていますので、ご確認ください。掲載内容は、以下の様に分類されており難易度別・分野別に多数掲載されています。 【参考】:MATLAB — 例
・MATLAB入門:4件 ・言語の基礎:68件 ・データのインポートと解析:50件 ・数学:70件 ・グラフィックス:67件 ・プログラミング:12件 ・アプリの作成:13件 ・ソフトウェア開発ツール:16件 ・外部言語インターフェイス:9件
MATLABをさらに学習するには
MATLABはプロプライエタリですが、学生向けライセンス体系が提供されており大学の授業でも利用されています。授業で用いるテキストは要点がまとまっており、一読の価値があります。
またMathWorks社の公式ビデオ解説も多数あります。日本語の教材は59件掲載されており、英語講座を含めると1,000件ほど確認できます。日本語ビデオ教材は、下記リンク先の冒頭から59件ですので、お時間許す方は順に眺めてみることをおすすめします。 【参考】:MATLAB — ビデオ
MATLABの経験を活かしましょう
データ分析や可視化では、Pythonが最も利用されているのも事実です。しかしながら、Pythonはライブラリが多数あるものの、個々のライブラリ導入や選択は利用者に任されています。MATLABはプロプライエタリで有償のためPythonほど利用者は多くはないですが、ワンストップソリューションとして統合開発環境の強みがあり、利用者が増加しています。
学生時代に授業でMATLABを学んだ方は、実機で動作確認している経験のアドバンテージがあります。その経験を生かして、需要が高い制御システム・ロボティックス・自動車・通信などにおいて、ソリューションの選定や利用に大いに活用できるでしょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから