はじめてのMatlab:環境構築から基本操作まで
はじめに
科学技術計算、データ解析、シミュレーション、アルゴリズム開発といった分野で、Matlabはその強力な機能と使いやすさから、世界中の研究者、エンジニア、学生に広く利用されています。本記事は、「はじめてMatlabに触れる」という方を対象に、Matlabの環境構築から基本的な操作、さらにはプログラミングの基礎までを詳細に解説することを目的としています。この記事を通して、Matlabを使った作業の第一歩を踏み出すための知識とスキルを習得できるでしょう。
なぜMatlabなのでしょうか? Matlabは、特に数値計算に特化したプログラミング言語であり、行列や配列を扱うのに非常に長けています。また、豊富な組み込み関数と、特定の分野に特化したアドオン機能である「Toolbox」が用意されているため、複雑な処理も比較的容易に記述できます。さらに、直感的な統合開発環境(IDE)と優れたドキュメンテーションは、初心者にとって大きな助けとなります。
この記事では、まずMatlabを自分のコンピューターに導入するための環境構築の手順を丁寧に説明します。次に、Matlabの基本的な操作方法、IDEの各ウィンドウの役割、変数の使い方、配列・行列の操作といった基本的な要素を学びます。さらに、プログラムを書く上での基本となる制御構造(条件分岐、繰り返し)、関数の定義と利用、データの入出力、そして結果を視覚的に理解するための基本的なプロット方法についても解説します。
約5000語の詳細な解説を通じて、Matlabの基礎をしっかりと固め、自信を持ってMatlabを使った作業に取り組めるようになることを目指しましょう。
第1部:Matlabの環境構築
Matlabを使い始めるためには、まずお使いのコンピューターにMatlabをインストールする必要があります。このセクションでは、Matlabの入手方法からインストール、そして最初の起動確認までの手順を詳しく説明します。
1. Matlabの入手
MatlabはMathWorks社によって開発・提供されています。Matlabを入手するには、MathWorks社のウェブサイトにアクセスする必要があります。
ライセンスの種類
Matlabには、利用者の種類や目的に応じていくつかのライセンスオプションがあります。
- 商用ライセンス: 企業や組織が業務目的で使用するためのライセンスです。
- アカデミックライセンス: 大学や研究機関が教育・研究目的で使用するためのライセンスです。多くの場合、大学や研究機関が包括契約を結んでおり、所属する学生や教職員は無料で利用できることがあります。所属機関のITサポートやWebサイトで確認してみてください。
- 学生ライセンス: 大学・高専・専門学校等に在籍する学生向けのライセンスです。アカデミックライセンスが利用できない場合や、個人的な学習・研究目的で使用したい場合に比較的安価に入手できます。
- トライアルライセンス: Matlabの機能を一定期間(通常30日間)無料で試用できるライセンスです。購入を検討する前に、Matlabの使い勝手や機能を確認したい場合に便利です。
- Homeライセンス: 個人的な非営利目的でのみ利用できるライセンスです。商用利用や研究機関での利用はできませんが、個人的な学習や趣味のプロジェクトに利用できます。
購入・ダウンロード方法
- MathWorksウェブサイトへのアクセス: MathWorks社の公式ウェブサイト (https://jp.mathworks.com/) にアクセスします。
- アカウント作成またはログイン: Matlabの購入、トライアル申し込み、ダウンロードにはMathWorksアカウントが必要です。まだアカウントをお持ちでない場合は、「アカウント作成」から必要事項を入力して作成します。すでにお持ちの場合はログインします。
- ライセンスの選択と購入(またはトライアル申し込み): ウェブサイトの案内に従って、ご希望のライセンスを選択し、購入手続きを進めます。トライアルを申し込む場合は、「トライアル」または「無料トライアル」といったリンクを探して申し込みます。所属機関でライセンスが提供されている場合は、その機関から提供される手順に従います。
- 製品のダウンロード: ライセンスが認証されると、MathWorksアカウントのページからMatlabインストーラーをダウンロードできるようになります。お使いのオペレーティングシステム(Windows, macOS, Linux)に合ったインストーラーを選択してダウンロードします。
システム要件の確認
Matlabを快適に使用するためには、お使いのコンピューターがMatlabのシステム要件を満たしているかを確認することが重要です。システム要件はMatlabのバージョンによって異なりますので、ダウンロードページやMathWorksのサポートページで必ず最新の情報を確認してください。一般的に要求されるリソースは以下の通りです。
- オペレーティングシステム (OS): Windows, macOS, またはサポートされているLinuxディストリビューション。各バージョンのMatlabがサポートするOSのバージョンは限られています。
- プロセッサ (CPU): IntelまたはAMDのマルチコアプロセッサが推奨されます。
- メモリ (RAM): 最低8GB、推奨16GB以上。大規模なデータや複雑なシミュレーションを扱う場合はより多くのメモリが必要です。
- ストレージ: Matlab本体のインストールに数GB、追加のToolboxをインストールする場合はさらに多くの容量が必要です。SSDが推奨されます。
- グラフィックスカード: ハードウェアアクセラレーションに対応したグラフィックスカードがあると、グラフ表示などが高速になります。
2. インストール手順
ダウンロードしたインストーラーファイルを実行して、Matlabのインストールを開始します。
- インストーラーの実行: ダウンロードした実行ファイル(例:
matlab_<version>_win64.exe
,matlab_<version>_mac64.dmg
など)をダブルクリックして実行します。セキュリティ警告が表示される場合は、許可して続行します。 - インストーラーの起動: インストーラーが起動し、セットアップウィザードが表示されます。
- MathWorksアカウントでのログイン: インストールを続行するために、MathWorksアカウントでのログインを求められます。ダウンロードに使用したアカウント情報でログインします。
- ライセンスの選択: ログイン後、利用可能なライセンスの一覧が表示されます。インストールに使用したいライセンスを選択します。所属機関の包括ライセンスなどを利用する場合は、ライセンスファイルの場所を指定したり、認証コードを入力したりする場合があります。
- インストール設定の確認: インストール先ディレクトリ、インストールする製品(Toolbox)のリストなどが表示されます。
- インストール先ディレクトリ: デフォルトのままで問題ないことがほとんどですが、必要に応じて変更できます。十分な空き容量があるドライブを選択してください。
- 製品の選択: Matlab本体(MATLAB)は必須です。それに加えて、必要なToolboxを選択します。初めての場合は、MATLAB本体のみ、またはデフォルトで選択されている基本的なToolboxのみで十分です。後からいつでもToolboxを追加インストールできます。
- インストールの開始: 設定を確認したら、「インストール」ボタンをクリックしてインストールを開始します。インストールには時間がかかります。
- インストールの完了: インストールが完了すると、完了画面が表示されます。「次へ」または「完了」をクリックします。
3. アクティベーション
インストール完了後、Matlabを使用可能にするために「アクティベーション」が必要になる場合があります。これは、インストールしたMatlabがお使いのライセンスに紐付けられていることを確認する作業です。
- インストール完了画面からアクティベーションプロセスに進む場合と、Matlabを初めて起動したときにアクティベーションを求められる場合があります。
- 画面の案内に従って、MathWorksアカウントにログインし、適切なライセンスを選択してアクティベーションを完了させます。
- ネットワークライセンス(所属機関で利用する場合)の場合は、ライセンスサーバーのアドレスなどを指定する必要がある場合があります。これは所属機関から指示されます。
アクティベーションが完了すると、Matlabが使用可能になります。
4. 起動確認
インストールとアクティベーションが完了したら、Matlabを起動して正しく動作するか確認しましょう。
- Matlabの起動:
- Windows: スタートメニューから「MATLAB <バージョン>」を選択して起動します。
- macOS: アプリケーションフォルダからMATLABアイコンをダブルクリックして起動します。
- Linux: ターミナルを開き、インストールディレクトリ内の
bin
フォルダにあるmatlab
コマンドを実行します(例:/usr/local/MATLAB/R2023b/bin/matlab
)。デスクトップ環境によってはアプリケーションメニューから起動することも可能です。
- Matlab IDEの表示: 起動に成功すると、Matlabの統合開発環境(IDE)が表示されます。通常、いくつかのウィンドウが表示されます。
- Command Window: コマンドを入力して即時実行するウィンドウです。
- Current Folder: 現在作業しているフォルダ(カレントディレクトリ)の中身を表示するウィンドウです。
- Workspace: 現在メモリ上に存在している変数の一覧を表示するウィンドウです。
- Editor: スクリプトや関数を記述するためのウィンドウです。初めて起動したときは表示されていないかもしれません。
-
最初のコマンド実行: Command Windowに以下のコマンドを入力し、Enterキーを押してみてください。
matlab
disp('Hello, Matlab!')disp
はディスプレイ(表示)を意味するMatlabの組み込み関数です。Command Windowに'Hello, Matlab!'
という文字列が表示されれば、Matlabは正しく動作しています。
これでMatlabの環境構築は完了です。次からは、Matlabの基本的な操作方法を学んでいきましょう。
第2部:Matlabの基本操作
このセクションでは、MatlabのIDEの各ウィンドウの役割から、変数の扱い方、行列・ベクトルの操作、基本的なプログラミングの概念(スクリプト、制御構造、関数)、データの入出力、そして結果のプロットまで、Matlabを使う上で必要となる基本的な操作を体系的に解説します。
1. Matlab IDEの各ウィンドウ詳細
Matlab IDEは、効率的に作業を行うための様々なツールを統合した環境です。主なウィンドウとその役割を理解することが、Matlabを使いこなすための第一歩です。
- Command Window:
- インタラクティブにコマンドを実行するためのウィンドウです。電卓のように簡単な計算をしたり、関数の動作を確認したりするのに便利です。
- 入力したコマンドはEnterキーで実行されます。
- 過去に入力したコマンドは、上矢印キー (
↑
) で遡って再利用できます。 - セミコロン (
;
) をコマンドの末尾に付けると、計算結果がCommand Windowに表示されなくなります。変数の代入などで結果の表示が不要な場合によく使用されます。 -
例:
“`matlab
% 簡単な計算
2 + 3
5 * (10 / 2)% 変数への代入(結果が表示される)
x = 10
y = x + 5% 変数への代入(結果が表示されない)
z = x * y;% 変数の値を表示
disp(z)% 組み込み関数の利用
sqrt(16)
sin(pi/2)
log(exp(1))
* **Workspace:**
matlab
* 現在Matlabのメモリ上に存在する全ての変数とその情報を表示するウィンドウです。
* 変数の名前、値(一部)、データ型、サイズなどが一覧で確認できます。
* 変数をダブルクリックすると、Variable Editorでその変数の内容を詳細に確認・編集できます(特に配列や行列の場合に便利)。
* `whos` コマンドをCommand Windowで実行すると、Workspaceの変数情報をテキスト形式で表示できます。
whos
* `clear` コマンドで特定の変数、または全ての変数をWorkspaceから削除できます。
matlab
clear y % 変数 y のみを削除
clear % 全ての変数を削除
* **Current Folder:**
matlab
* Matlabが現在作業ディレクトリとして認識しているフォルダの中身を表示するウィンドウです。
* Matlabは、Command Windowで実行されるスクリプトファイルや、関数ファイルの読み込みをこのフォルダから行います。
* ファイルのアイコンをダブルクリックすると、対応するエディタやビューアで開かれます(.mファイルならEditorで開くなど)。
* フォルダのパスを変更するには、ウィンドウ上部のアドレスバーを編集するか、参照ボタン (`...`) を使用します。
* Matlabがファイルを見つけられるように、作業中のスクリプトや関数ファイルはこのフォルダに置くか、または`addpath`コマンドでそのフォルダをMatlabの検索パスに追加する必要があります。
% 現在のパスを表示
pwd% 作業ディレクトリを変更 (例: Windows)
cd ‘C:\Users\YourName\Documents\MatlabProjects’% 作業ディレクトリを変更 (例: macOS/Linux)
cd ‘/Users/YourName/Documents/MatlabProjects’% パスを追加 (例: ‘myfunctions’ というサブフォルダに関数がある場合)
addpath(‘myfunctions’)
* **Editor:**
matlab
* Matlabのスクリプトファイル(.mファイル)や関数ファイルを記述・編集するためのウィンドウです。
* 複数のコマンドをまとめて実行したい場合、プログラムとして保存しておきたい場合にEditorを使用します。
* ファイルを開くには、Command Windowで `edit ファイル名.m` と入力するか、Current Folderウィンドウでファイルをダブルクリックするか、IDEメニューの「New」から「Script」を選択します。
* Editor上で記述したコードは、上部の「Run」ボタン(緑色の三角形)をクリックするか、`F5`キーを押すことで実行できます。
* コードの色分け(シンタックスハイライト)、自動補完、エラーや警告の表示など、コーディングを助ける多くの機能があります。
* 行頭に `%` を付けるとその行はコメントとして扱われ、実行されません。コードの説明や一時的な無効化に利用します。
% これはコメント行です。
% 以下の行は実行されます。
a = 10;
b = 20;
c = a + b; % ここもコメントです。
disp(c)
``
%%` を付けると、その箇所でコードをセクションに区切ることができます。セクションごとに実行したり、公開用のコードとして整形したりするのに便利です。
* 連続する行頭に
2. 変数の扱い
プログラミングにおいて、変数はデータを一時的に保存するための入れ物です。Matlabでは、変数名を指定してデータ(数値、文字列など)を代入することで変数を作成します。
変数の命名規則
- 変数名はアルファベット(大文字・小文字)、数字、アンダースコア (
_
) を使用できます。 - 変数名の先頭はアルファベットでなければなりません。数字やアンダースコアで始めることはできません。
- 大文字と小文字は区別されます (
myVariable
とmyvariable
は別の変数です)。 - Matlabの予約語(
if
,for
,while
,end
,function
など)を変数名として使用することはできません。
データ型
Matlabは様々なデータ型を扱えますが、数値データとしてはデフォルトで double(倍精度浮動小数点数)が最も一般的です。
- 数値型:
double
: デフォルト。一般的な数値計算に使用される浮動小数点数。single
: 単精度浮動小数点数。メモリを節約したい場合などに使用。int8
,uint8
,int16
,uint16
,int32
,uint32
,int64
,uint64
: 整数型。格納できる値の範囲やメモリ使用量が異なります。画像処理などでよく使われるuint8
(0-255の符号なし8ビット整数)などがあります。
- 文字・文字列型:
char
: シングルクォーテーション ('
) で囲まれた1文字、または文字の配列(文字列として扱われることが多い)。string
: ダブルクォーテーション ("
) で囲まれた文字列(R2017a以降)。char
型よりも文字列操作が容易です。
- 論理型 (
logical
): 真 (true
, または数値の1
) または偽 (false
, または数値の0
) を格納します。条件判定の結果などで生成されます。
代入演算子
変数に値を格納するには、等号 (=
) を使用します。
“`matlab
% 数値変数
my_number = 123.45;
integer_value = int32(100); % int32型として代入
% 文字列変数
my_char_string = ‘Hello’; % char型の配列
my_string = “World”; % string型
% 論理変数
is_true = true;
is_false = (10 > 20); % 条件判定の結果(偽なのでfalse)
% Workspaceを確認するとこれらの変数が追加されている
whos
“`
3. 行列とベクトルの基本
Matlab(Matrix Laboratoryに由来)の名前が示す通り、Matlabは行列やベクトルの計算に非常に特化しています。多くの操作がベクトルや行列に対して効率的に行えるように設計されています。
ベクトルの作成
ベクトルは1次元の配列です。行ベクトルと列ベクトルがあります。
- 行ベクトル: 角括弧
[]
を使用し、要素をスペースまたはコンマ,
で区切ります。
matlab
row_vector = [1 2 3 4 5];
another_row_vector = [10, 20, 30]; - 列ベクトル: 要素をセミコロン
;
で区切ります。
matlab
column_vector = [1; 2; 3; 4; 5]; - 範囲指定:
開始値:増分:終了値
の形式で規則的なベクトルを作成できます。増分を省略すると1
となります。
matlab
numbers = 1:10; % [1 2 3 4 5 6 7 8 9 10]
even_numbers = 2:2:20; % [2 4 6 8 10 12 14 16 18 20]
decreasing_numbers = 10:-1:1; % [10 9 8 7 6 5 4 3 2 1] linspace
:linspace(開始値, 終了値, 要素数)
の形式で、指定された範囲を等間隔に分割するベクトルを作成します。要素数を省略するとデフォルトで100となります。
matlab
linear_space = linspace(0, 10, 5); % [0 2.5 5 7.5 10]
行列の作成
行列は2次元の配列です。行をセミコロン ;
で区切ります。
matlab
my_matrix = [1 2 3; 4 5 6; 7 8 9];
% これは以下のように表示されます:
% 1 2 3
% 4 5 6
% 7 8 9
よく使う特殊な行列を作成する関数:
zeros(m, n)
: m行n列のゼロ行列ones(m, n)
: m行n列の要素が全て1の行列eye(n)
: n次単位行列rand(m, n)
: m行n列の0から1までの一様乱数行列randn(m, n)
: m行n列の標準正規分布に従う乱数行列
matlab
zero_matrix = zeros(2, 3); % 2x3 のゼロ行列
one_vector = ones(1, 5); % 1x5 の全て1の行ベクトル
identity_matrix = eye(4); % 4x4 の単位行列
random_matrix = rand(3, 2); % 3x2 の乱数行列
要素へのアクセス(インデックス指定)
行列やベクトルの個々の要素には、インデックス(添え字)を使ってアクセスします。Matlabのインデックスは 1から始まります (多くのプログラミング言語とは異なる点に注意)。
- ベクトル:
ベクトル名(インデックス)
matlab
v = [10 20 30 40 50];
v(3) % 3番目の要素 (30)
v(1) = 100; % 1番目の要素を100に変更
v % [100 20 30 40 50] - 行列:
行列名(行インデックス, 列インデックス)
matlab
M = [1 2 3; 4 5 6; 7 8 9];
M(2, 3) % 2行3列目の要素 (6)
M(1, 1) = 99; % 1行1列目の要素を99に変更
M
% 99 2 3
% 4 5 6
% 7 8 9 - 範囲指定でのアクセス(コロン
:
を使用): コロン:
は「その次元の全ての要素」または「指定範囲の要素」を意味します。
matlab
M
M(2, :) % 2行目の全ての要素 (行ベクトル [4 5 6])
M(:, 3) % 3列目の全ての要素 (列ベクトル [3; 6; 9])
M(1:2, :) % 1行目から2行目までの全ての列 ([99 2 3; 4 5 6])
M(:, [1 3]) % 1列目と3列目の全ての行 ([99 3; 4 6; 7 9]) end
キーワード:end
はその次元の最後のインデックスを意味します。
matlab
v(end) % ベクトルの最後の要素 (50)
M(end, end) % 行列の右下の要素 (9)
M(1, 2:end) % 1行目の2列目から最後まで ([2 3])
行列・ベクトル演算
Matlabでは、行列やベクトルに対する演算が非常に簡単に行えます。
-
要素ごとの演算 (Element-wise Operations): 同じサイズの配列(行列やベクトル)に対して、対応する要素同士で演算を行います。演算子の前にドット
.
を付けます。
“`matlab
A = [1 2; 3 4];
B = [5 6; 7 8];A + B % [1+5 2+6; 3+7 4+8] = [6 8; 10 12] (要素ごとの加算)
A . B % [15 26; 37 4*8] = [5 12; 21 32] (要素ごとの乗算)
A ./ B % [1/5 2/6; 3/7 4/8] = [0.2 0.3333; 0.4286 0.5] (要素ごとの除算)
A .^ 2 % [1^2 2^2; 3^2 4^2] = [1 4; 9 16] (要素ごとのべき乗)% スカラーとの演算はドット不要(自動的に要素ごとになる)
A + 10 % [11 12; 13 14]
A * 2 % [2 4; 6 8]
* **行列演算 (Matrix Operations):** 線形代数における行列演算を行います。通常はドットを付けません(乗算 `*`、べき乗 `^`、左除算 `\`、右除算 `/` など)。行列演算には、オペランドの行列のサイズに互換性が必要です(例: 行列A (m x n) と行列B (p x q) の乗算 `A * B` は、n = p の場合にのみ可能です)。
matlab
A = [1 2; 3 4]; % 2×2 行列
C = [5 6; 7 8]; % 2×2 行列
D = [10 11; 12 13; 14 15]; % 3×2 行列A * C % 行列乗算
% [15+27 16+28;
% 35+47 36+48] = [19 22; 43 50]% A * D % エラー! 内側の次元が一致しない (2×2 * 3×2)
D * A % Dは3×2、Aは2×2 なので乗算可能。結果は 3×2 行列。
% [101+113 102+114;
% 121+133 122+134;
% 141+153 142+154] = [43 64; 51 76; 59 88]% 逆行列と線形方程式
E = [2 1; 1 3];
E_inv = inv(E); % Eの逆行列を計算
I = E * E_inv; % E * inv(E) は単位行列になるはず (浮動小数点誤差あり)% 線形方程式 Ax = b を解く (x = A \ b)
coeffs = [2 1; 1 3]; % 行列 A
constants = [5; 10]; % 列ベクトル b
solution_x = coeffs \ constants; % x を計算
% (2x + y = 5, x + 3y = 10 の解)
% solution_x は [1; 3] になるはず
* **転置 (`'`):** 行列の行と列を入れ替えます。
matlab
M = [1 2 3; 4 5 6]; % 2×3 行列
M_transpose = M’; % 3×2 行列 ([1 4; 2 5; 3 6])v = [1 2 3]; % 1×3 行ベクトル
v_transpose = v’; % 3×1 列ベクトル ([1; 2; 3])
“` -
サイズ、長さの取得:
matlab
size(M) % [2 3] (行数, 列数)
size(v) % [1 3] (行数, 列数)
length(v) % 3 (ベクトルの長さ、つまり要素数)
length(M) % max(size(M)) = 3 (行列の場合は大きい方の次元のサイズ)
numel(M) % 6 (要素の総数)
行列とベクトル操作はMatlabの根幹であり、多くのToolbox関数もこれらを引数として受け取るように設計されています。効率的なMatlabコードを書くためには、スカラーのループ処理ではなく、配列や行列全体に対する演算(ベクトル化)を積極的に行うことが推奨されます。
4. スクリプトファイル(.mファイル)
簡単なコマンドはCommand Windowで直接実行できますが、一連の処理を行う場合や、後で再利用したい処理はスクリプトファイルに記述します。スクリプトファイルは拡張子 .m
を持ち、Matlab Editorで作成・編集します。
スクリプトの作成と保存
- Matlab IDEのメニューバーから「New」->「Script」を選択します。または、ツールバーの「New Script」ボタンをクリックします。
-
Editorウィンドウが開きます。ここにMatlabコマンドを記述します。
“`matlab
% calculate_area.m
% このスクリプトは円の面積を計算します。radius = 5; % 半径
area = pi * radius^2; % 面積を計算 (piはMatlabの組み込み定数)fprintf(‘半径 %.2f の円の面積は %.2f です。\n’, radius, area);
``
%
*はコメントです。コードの説明などに使います。
fprintf
*は書式を指定して文字列を表示する関数です。
%.2fは小数点以下2桁までの浮動小数点数を表示することを意味します。
\nは改行です。
calculate_area.m`)。ファイル名はアルファベットから始め、スペースや特殊文字を含めないのが一般的です。ファイルはCurrent Folderに保存するのが最も簡単です。
3. ファイルを保存します。Editorツールバーの保存ボタンをクリックするか、「File」->「Save」を選択します。ファイル名を付けます(例:
スクリプトの実行
- Editorウィンドウ上部の「Run」ボタン(緑色の三角形)をクリックします。
- キーボードの
F5
キーを押します。 - Command Windowでスクリプトのファイル名(拡張子
.m
なし)を入力してEnterキーを押します。
matlab
calculate_area
スクリプトが実行され、Command Windowに結果が表示されます。
コメントの活用
コメントはコードの可読性を高める上で非常に重要です。自分自身が後からコードを見返したり、他の人がコードを理解したりする際に役立ちます。
- 単一行コメント: 行頭に
%
- 複数行コメント: 行頭に
%{
と%}
で囲みます。
matlab
%{
これは複数行コメントの例です。
このブロック内のテキストは全て実行されません。
%}
セクション区切り (Sections)
スクリプト内に %%
を使うと、コードを論理的なセクションに分割できます。Editorの「Run and Advance」ボタンなどで、セクションごとにコードを実行したり、結果をLive Script形式で出力したりするのに便利です。
“`matlab
%% パラメータ設定
radius = 10;
height = 20;
%% 円柱の体積計算
base_area = pi * radius^2;
volume = base_area * height;
%% 結果表示
fprintf(‘半径 %.2f、高さ %.2f の円柱の体積は %.2f です。\n’, radius, height, volume);
“`
5. 基本的な制御構造
プログラムの流れを制御するための基本的な構造として、条件分岐と繰り返しがあります。
条件分岐 (if
, elseif
, else
, end
)
指定した条件が真か偽かによって、実行するコードを切り替えます。
“`matlab
score = 75;
if score >= 90
grade = ‘A’;
elseif score >= 80
grade = ‘B’;
elseif score >= 70
grade = ‘C’;
elseif score >= 60
grade = ‘D’;
else
grade = ‘F’;
end
fprintf(‘点数: %d, 評価: %s\n’, score, grade);
% 比較演算子: == (等しい), ~= (等しくない), < (より小さい), > (より大きい), <= (以下), >= (以上)
% 論理演算子: && (かつ), || (または), ~ (ではない)
x = 10;
y = 5;
if x > 5 && y < 10
disp(‘xは5より大きく、yは10より小さい’);
end
“`
繰り返し (for
, while
, end
)
特定のコードブロックを複数回繰り返して実行します。
-
for
ループ: 指定した回数、または指定した範囲の各要素に対して繰り返します。“`matlab
% 1から5までカウント
for i = 1:5
fprintf(‘現在の値: %d\n’, i);
end% 配列の各要素に対して処理
data = [10 20 30 40];
for val = data
fprintf(‘要素の値: %d\n’, val);
end% 行列の列に対して処理
matrix_data = [1 2; 3 4; 5 6];
for col = 1:size(matrix_data, 2) % size(matrix_data, 2) は列数 (2)
fprintf(‘%d 列目のデータ:\n’, col);
disp(matrix_data(:, col)); % col 列目の全ての行を表示
end
“` -
while
ループ: 指定した条件が真である間、繰り返しを実行します。無限ループにならないように注意が必要です。matlab
count = 0;
while count < 5
fprintf('カウント: %d\n', count);
count = count + 1; % 条件を変化させる必要がある
end -
break
とcontinue
:break
: ループの現在の実行を即座に終了し、ループの次のステートメントに進みます。continue
: ループの現在の反復処理をスキップし、次の反復処理を開始します。
“`matlab
for i = 1:10
if i == 5
break; % iが5になったらループを終了
end
fprintf(‘%d ‘, i);
end
fprintf(‘\n’); % 結果: 1 2 3 4for i = 1:10
if mod(i, 2) ~= 0 % iが奇数なら
continue; % この反復処理をスキップ
end
fprintf(‘%d ‘, i); % 偶数のみ表示
end
fprintf(‘\n’); % 結果: 2 4 6 8 10
“`
6. 関数(Function)
関数は、特定の処理をまとめた再利用可能なコードブロックです。Matlabには多くの組み込み関数がありますが、自分で新しい関数を定義することもできます。
組み込み関数
Matlabには、数学関数(sin
, cos
, sqrt
, exp
, log
など)、データ処理関数(sum
, mean
, median
, max
, min
, sort
など)、行列操作関数(inv
, det
, eig
など)、ファイル入出力関数、プロット関数など、非常に多くの組み込み関数が用意されています。使い方はCommand Windowでhelp 関数名
やdoc 関数名
で確認できます。
matlab
help sin
doc plot
ユーザー定義関数
独自の関数を作成することで、コードのモジュール化、可読性の向上、再利用性の向上を図れます。
-
関数の定義: Editorで新しいファイルを作成し、以下の形式で関数を定義します。ファイル名の拡張子は
.m
です。関数名とファイル名は(ほとんどの場合)一致させる必要があります。“`matlab
% calculate_circle_area_func.m
function area = calculate_circle_area_func(radius)
% calculate_circle_area_func 円の面積を計算する関数
% area = calculate_circle_area_func(radius) は、
% 与えられた半径 radius を持つ円の面積 area を計算します。if radius < 0 error('半径は非負でなければなりません。'); end area = pi * radius.^2; % 半径が配列の場合も考慮して要素ごとのべき乗演算子を使用
end
``
function
*キーワードで関数の開始を示します。
[出力変数]
*=
関数名(入力変数)の形式で、関数のインターフェースを定義します。出力変数や入力変数は複数指定することも可能です (
[out1, out2] = myFunction(in1, in2, in3)のように角括弧で囲みます)。出力変数や入力変数がない場合は省略します。
end
* 関数の定義はキーワードで終了します(ファイルが関数定義のみを含む場合は省略可能ですが、明示的に書くのが推奨されます)。
help 関数名
* 関数の本体に処理を記述します。
* 関数の先頭にある複数行のコメントは、コマンドで表示されるヘルプテキストとして利用されます。関数の使い方を説明する上で非常に重要です。
error` 関数を使用しています。エラーが発生すると実行が停止し、指定したメッセージが表示されます。
* エラーチェックに -
関数の保存: 関数名と同じ名前(例:
calculate_circle_area_func.m
)でファイルを保存します。ファイルはMatlabの検索パス上にあるフォルダ(Current Folderなど)に保存してください。 -
関数の呼び出し: Command Windowまたは他のスクリプトや関数から、関数名と入力引数を指定して呼び出します。
“`matlab
% Command Window または別のスクリプトから
r = 10;
circle_area = calculate_circle_area_func(r);
fprintf(‘半径 %.2f の円の面積は %.2f です。\n’, r, circle_area);% 複数の入出力変数を持つ関数の例(簡単な統計量を計算する関数があったとして)
% [avg, sd, max_val] = calculate_stats(data_vector);
“`
ローカル変数とグローバル変数
- ローカル変数: 関数内で定義された変数は、その関数の実行中だけ存在し、関数外からはアクセスできません。他の関数で同じ変数名を使っても干渉しません。ユーザー定義関数の入力変数と出力変数もローカル変数です。
- グローバル変数:
global
キーワードを使って定義された変数は、複数の関数やスクリプト間で共有できます。ただし、コードの見通しが悪くなるなどの理由から、グローバル変数の使用は最小限にとどめるのが一般的です。
“`matlab
% 関数A
function func_a()
global shared_variable;
shared_variable = 100;
disp([‘func_a内で設定: ‘, num2str(shared_variable)]);
end
% 関数B
function func_b()
global shared_variable; % 同じグローバル変数を宣言
% shared_variable が func_a で設定されていればその値が利用可能
disp([‘func_b内で参照: ‘, num2str(shared_variable)]);
end
% スクリプトやCommand Windowから呼び出し
global shared_variable; % グローバル変数を使用する全ての場所で宣言が必要
func_a();
func_b();
“`
7. データの入出力
Matlabは様々な形式のデータをファイルから読み込んだり、ファイルに書き出したりする機能を持っています。
-
Matlab形式ファイル (.mat): Matlab独自のデータ形式で、変数そのものを保存・読み込みできます。データ型や構造を保持したまま高速に入出力できます。
“`matlab
% 変数を保存
data_x = rand(100, 10);
data_y = ‘sample data’;
save(‘mydata.mat’, ‘data_x’, ‘data_y’); % ‘mydata.mat’ に data_x と data_y を保存
% save(‘mydata.mat’); % 全てのWorkspaceの変数を保存% 変数を読み込み
clear % Workspaceをクリア
load(‘mydata.mat’); % mydata.mat に保存されていた変数がWorkspaceに読み込まれる
whos % data_x と data_y が表示されるはず
* **テキストファイル (CSV, TXTなど):**
matlab
* **`readmatrix`, `writematrix` (推奨):** R2019a以降で導入された関数で、数値データを含むテキストファイルを扱うのに便利です。CSVファイルなども効率的に読み書きできます。
% 数値データの書き出し
my_matrix = [1 2 3; 4 5 6];
writematrix(my_matrix, ‘output.csv’); % output.csv に書き出し% 数値データの読み込み loaded_matrix = readmatrix('output.csv'); % output.csv から読み込み ```
csvread
,csvwrite
(古い): シンプルなCSVファイルの読み書きに使われましたが、readmatrix
,writematrix
の方が機能が豊富で推奨されます。dlmread
,dlmwrite
(古い): 区切り文字を指定してテキストファイルを読み書きします。-
低レベルI/O (
fopen
,fprintf
,fscanf
,fclose
): より柔軟なテキストファイルの読み書きや、バイナリファイルの読み書きに使用します。複雑な形式のファイルを扱う場合に必要になります。
“`matlab
% ファイルへの書き込み
fileID = fopen(‘mytextfile.txt’, ‘w’); % 書き込みモードでファイルを開く
fprintf(fileID, ‘これはテストです。\n’); % ファイルに書き出し
fprintf(fileID, ‘数値: %d, %.2f\n’, 123, 45.678);
fclose(fileID); % ファイルを閉じる% ファイルからの読み込み
fileID = fopen(‘mytextfile.txt’, ‘r’); % 読み込みモードでファイルを開く
first_line = fgetl(fileID); % 1行読み込み
second_line = fgetl(fileID); % 2行読み込み
fclose(fileID); % ファイルを閉じるdisp(first_line);
disp(second_line);
* **Excelファイル (.xls, .xlsx):** `readtable`, `writetable` 関数などを使用します。
matlab
% Excelファイルからの読み込み(データを行列として)
excel_data = readmatrix(‘myexcel.xlsx’, ‘Sheet’, ‘Sheet1’, ‘Range’, ‘A1:C10’);
% テーブルとして読み込み(ヘッダーなども含む)
excel_table = readtable(‘myexcel.xlsx’, ‘Sheet’, ‘Sheet1’);% データの書き出し
data_to_write = [10 20; 30 40];
writematrix(data_to_write, ‘output_excel.xlsx’);
“`
8. 基本的なプロット
計算結果やデータを視覚化することは、理解を深め、結果を効果的に伝える上で非常に重要です。Matlabには強力なプロット機能があります。
2Dプロット (plot
)
最も基本的な関数です。1つまたは複数のデータセットを線やマーカーで表示します。
“`matlab
% シンプルな線グラフ
x = 0:pi/10:2*pi; % 0から2πまでの点を生成
y = sin(x); % 対応するyの値 (sin関数)
plot(x, y); % x対yをプロット
title(‘Sine Function’); % タイトル
xlabel(‘x’); % x軸ラベル
ylabel(‘sin(x)’); % y軸ラベル
grid on; % グリッドを表示
% 複数の線を同じグラフにプロット
y2 = cos(x);
hold on; % 現在のグラフに追加してプロットすることを保持
plot(x, y2, ‘–r’); % 点線で赤色のプロット
hold off; % 保持を解除
% 凡例を追加
legend(‘sin(x)’, ‘cos(x)’);
% 線のスタイル、色、マーカーの指定
% plot(x, y, ‘オプション’);
% オプション例:
% ‘-‘ 実線 (デフォルト)
% ‘–‘ 点線
% ‘:’ ドット
% ‘-.’ 一点鎖線
% ‘r’ 赤
% ‘g’ 緑
% ‘b’ 青
% ‘k’ 黒
% ‘o’ 円マーカー
% ‘x’ Xマーカー
% ‘*’ アスタリスクマーカー
% ‘.’ 点マーカー
% 新しい図を作成
figure; % 新しいウィンドウで図を作成
plot(x, tan(x), ‘m*’); % 別ウィンドウにタンジェント関数をプロット
title(‘Tangent Function’);
xlabel(‘x’);
ylabel(‘tan(x)’);
ylim([-10 10]); % y軸の表示範囲を制限
“`
散布図 (scatter
)
データ点をマーカーとしてプロットします。
matlab
x = randn(1, 100); % 標準正規乱数 100個
y = randn(1, 100);
scatter(x, y, 'filled'); % 塗りつぶしマーカーで散布図を作成
title('Random Scatter Plot');
xlabel('Random Data 1');
ylabel('Random Data 2');
ヒストグラム (histogram
)
データの分布を表示します。
matlab
data = randn(1000, 1); % 1000個の標準正規乱数
histogram(data, 20); % 20個のビン(区間)でヒストグラムを作成
title('Histogram of Random Data');
xlabel('Value');
ylabel('Frequency');
3Dプロット
3次元のデータを視覚化します。
- 3D線グラフ (
plot3
)
matlab
t = 0:pi/50:10*pi;
x = sin(t);
y = cos(t);
z = t;
plot3(x, y, z);
title('3D Helix');
xlabel('x');
ylabel('y');
zlabel('z');
grid on; -
曲面プロット (
surf
,mesh
)
“`matlab
[X, Y] = meshgrid(-2:0.2:2, -2:0.2:2); % 2次元グリッドを生成
Z = X .* exp(-X.^2 – Y.^2); % 各点のz値を計算figure;
surf(X, Y, Z); % 陰影付き曲面プロット
title(‘Surface Plot’);
xlabel(‘X’);
ylabel(‘Y’);
zlabel(‘Z’);figure;
mesh(X, Y, Z); % メッシュ(ワイヤーフレーム)プロット
title(‘Mesh Plot’);
xlabel(‘X’);
ylabel(‘Y’);
zlabel(‘Z’);
“`
プロット機能には他にも多くの種類とカスタマイズオプションがあります。詳細は各関数のドキュメンテーションを参照してください。help plot
, doc surf
などで調べることができます。
第3部:Matlab活用のヒントと次のステップ
Matlabの基本的な操作をマスターしたところで、さらに学習を進め、Matlabをより効果的に活用するためのヒントと情報源を紹介します。
1. ヘルプ機能の活用
Matlabを使いこなす上で最も重要なスキルの1つは、ヘルプ機能を活用することです。Matlabのドキュメンテーションは非常に充実しています。
help 関数名
: Command Windowで関数の簡単な説明と構文を表示します。doc 関数名
: 詳細な説明、使用例、関連関数などが含まれる完全なドキュメンテーションウィンドウを開きます。多くの場合はこちらの方が有用です。- ドキュメンテーションブラウザ: Matlab IDEのメニューバーから「Help」->「Documentation」を選択すると、ドキュメンテーションブラウザが開きます。キーワード検索やカテゴリごとの閲覧が可能です。
- MathWorksウェブサイト: 最新のドキュメンテーションは、MathWorks社のウェブサイトでも公開されています。オンラインドキュメンテーションは常に最新であり、検索機能も強力です。
2. Toolboxについて
Toolboxは、特定の分野(信号処理、画像処理、制御システム、統計、機械学習など)に特化した関数やツールをまとめたMatlabのアドオン製品です。これらのToolboxを利用することで、専門的な処理を効率的に行うことができます。
例えば、
- Signal Processing Toolbox: 信号のフィルタリング、周波数解析、スペクトル推定など。
- Image Processing Toolbox: 画像の読み込み、表示、フィルタリング、セグメンテーション、特徴抽出など。
- Control System Toolbox: システムのモデリング、解析、制御器設計など。
- Statistics and Machine Learning Toolbox: 統計解析、機械学習アルゴリズム(分類、回帰、クラスタリングなど)。
お使いのライセンスに含まれているToolboxは、MathWorksアカウントページやMatlabのインストール時に確認できます。特定のToolboxが必要になった場合は、追加で購入またはライセンスを更新する必要があります。
3. Simulinkについて
Simulinkは、Matlabに統合されたマルチドメインシミュレーションおよびモデルベースデザインのためのブロック線図環境です。システムのモデル化、シミュレーション、解析をグラフィカルに行うことができます。動的システムの挙動を解析したり、制御システムや通信システムなどの設計・検証を行ったりするのに広く利用されています。Matlabスクリプトと連携させることも可能です。SimulinkはMatlabとは異なるインターフェースを持ちますが、多くのエンジニアリング分野で重要なツールです。
4. コミュニティと情報源
学習中に疑問が生じたり、特定の課題に対する解決策を探したりする際には、オンラインのコミュニティや情報源が非常に役立ちます。
- MathWorksユーザーフォーラム: 世界中のMatlabユーザーが集まる公式フォーラムです。質問を投稿したり、他のユーザーの質問と回答を参照したりできます。
- MATLAB Central: MathWorksが運営するコミュニティサイトです。
- File Exchange: ユーザーが作成したスクリプトや関数、Toolboxのコードなどが共有されています。役立つコードが見つかることがあります。
- Blogs: MathWorksのエキスパートやユーザーによる技術的なブログ記事が多数公開されています。
- Stack Overflow: プログラミングに関するQ&Aサイト。Matlabに関する多くの質問と回答が投稿されています。
- 書籍: Matlabの入門書から応用書まで、様々なレベルの書籍が出版されています。
- オンライン学習プラットフォーム: Coursera, edX, Udemyなどのプラットフォームで、Matlabに関するコースが提供されています。MathWorks自身もオンラインコースを提供しています。
5. さらに学ぶために
Matlabの基礎を習得したら、次は具体的な応用例に取り組むのが良いでしょう。
- ご自身の専門分野に関連するデータを使った解析やシミュレーションに挑戦する。
- 興味のあるMatlabのToolboxについて学び、その機能を使ってみる。
- MathWorksのチュートリアルや例題を参考に、様々な機能を使ってみる。
- MATLAB CentralのFile Exchangeで公開されているコードをダウンロードして、どのように書かれているか読んでみる。
- Project機能を使ってみる。 プロジェクト機能は、関連するファイルや設定をまとめて管理するのに役立ち、大規模なコードを扱う場合に便利です。
Matlabの学習は、実際にコードを書いて試行錯誤することが最も効果的です。小さなプログラムから始め、徐々に複雑な課題に挑戦していきましょう。
まとめ
この記事では、Matlabを初めて使用する方が、環境構築から基本的な操作までを習得できるよう、詳細な解説を行いました。
まず、Matlabの入手方法、システム要件の確認、インストールの手順、そして最初の起動確認について説明しました。Matlab IDEのCommand Window、Workspace、Current Folder、Editorといった各ウィンドウの役割と基本的な使い方を理解しました。
次に、Matlabプログラミングの基礎として、変数の扱い方、数値、文字、論理型といった基本的なデータ型、そしてMatlabの強みである行列とベクトルの作成、要素へのアクセス、演算方法を学びました。
さらに、複数のコマンドをまとめて実行するためのスクリプトファイル(.mファイル)の作成と実行方法、プログラムの流れを制御するための条件分岐(if
)と繰り返し(for
, while
)といった制御構造、特定の処理をまとめるユーザー定義関数の作成と利用方法を解説しました。また、ファイルからのデータの読み込みやファイルへのデータの書き出しといった入出力操作についても触れました。
最後に、計算結果やデータの可視化に不可欠な基本的なプロット方法(plot
, scatter
, histogram
, surf
など)を紹介し、図のカスタマイズ方法の基本を学びました。
Matlabは非常に多機能なツールであり、この記事で触れた内容は基本的な部分に過ぎません。しかし、これらの基礎をしっかりと理解することで、さらに高度な機能やToolboxの学習に進むための土台ができます。
Matlabの学習は継続が鍵です。実際に手を動かし、コードを書き、エラーを修正しながら、少しずつスキルを向上させていきましょう。困ったときは、Matlabの充実したヘルプ機能やオンラインのコミュニティを積極的に活用してください。
本記事が、皆様のMatlab学習の良き出発点となることを願っています。Matlabの強力な機能を活用して、皆様の研究や開発がより効率的かつ創造的なものになることを期待しています。