はじめに

MATLABは数値解析やアルゴリズム開発だけでなく、プログラミング環境としても優れています。特に、スクリプトライブスクリプトを活用すると、コードを整理しながら効率よく実装できるのが魅力です。本記事では、MATLABでのプログラミングスタイルや、ループ条件付きステートメントなどの基礎構文、さらにスクリプトの保存場所に関するポイントを解説していきます。

キーワード例: MATLAB, プログラミング, スクリプト, ライブスクリプト, ループ, 条件分岐, 保存場所

スクリプトとは?

スクリプトは、MATLABコードを一連に書きまとめて実行するためのファイル(*.mファイル)です。複数行のコードをひとつのファイルに保存しておくことで、繰り返し実行しやすくなります。

スクリプトのメリット

  • 複数行にわたるコマンドを一度に実行できる
  • バージョン管理がしやすい(Gitなど)
  • 再利用性が高い

図1.スクリプトの例

ライブスクリプトとは?

ライブスクリプトは、通常のスクリプト(*.mファイル)を拡張した、リッチテキスト形式のファイル(*.mlx)です。コードと結果(図や表など)を同じ文書内にまとめられるため、レポート作成やプレゼンテーションに便利です。

ライブスクリプトの主な機能

  1. インラインでの結果表示: グラフや数値結果がコードセルの下や右に直接表示される
  2. リッチテキスト編集: 太字や箇条書き、数式の挿入などが可能
  3. 対話的な操作: セルごとにコードを実行して、随時結果を確認できる
x = linspace(0, 2*pi, 100);  % 0から2πまでを等間隔で100点生成
y = sin(x);                  % xの各値に対して正弦関数sin(x)を計算

plot(x, y);                  % x軸にx、y軸にyを取った線グラフを描画
title('正弦波のグラフ');     % グラフにタイトル「正弦波のグラフ」を設定

図2.ライブスクリプトの例

ループと条件付きステートメント

forループ

for ループは、指定回数だけ繰り返し処理を行うときに使います。

i はループ変数で、1 から 5 までインクリメントします。

a = 0;              % 初期値を0に設定する変数aを定義

for i = 1:5         % 1から5までループを実行
    a = a + 1;      % 変数aの値に1を加算
    disp(['ループ回数: ', num2str(i), ', a = ', num2str(a)]); 
                    % 現在のループ回数iと変数aの値を表示
end                 % ループの終了

図3.for ループの例

whileループ

while ループは、ある条件が満たされるまで繰り返し処理を行います。

条件(count < 5)が真の間、ループを実行します。

count = 0;              % 初期値を0に設定する変数countを定義

while count < 5         % countが5未満の間、ループを繰り返す
    count = count + 1;  % 変数countの値を1増加させる
    disp(['countの値: ', num2str(count)]); % countの現在の値を表示
end                     % whileループの終了

図4.while ループの例

if-else文(条件付きステートメント)

if 文は、条件に応じて処理の分岐をしたいときに使います。

  • x > 5 かどうかで、出力するメッセージを変えています。
  • 条件が複数ある場合は、elseif を使って続けて条件分岐を記述できます。
x = 10;     % 変数xを定義し、値10を代入

if x > 5    % xが5より大きい場合に実行する条件
    disp('xは5より大きいです');      % 条件が真の場合、このメッセージを表示
else        % 条件が偽(xが5以下)の場合に実行する処理
    disp('xは5以下です');            % 条件が偽の場合、このメッセージを表示
end         % if-else文の終了

図5.if-else文の例

表1.ループと条件付きステートメントの一覧

構文例文用途
forfor i = 1:5 … end指定回数の繰り返し
whilewhile condition … end条件が真の間、繰り返し
if-elseif condition … elseif … else … end条件分岐

スクリプトの保存場所

MATLABでは、作業する現在のフォルダー (作業フォルダ) を意識することが重要です。スクリプト(*.mファイルや*.mlxファイル)を作成・実行する際には、以下の点を注意してください。

  1. 現在のフォルダーの選択
    • MATLAB上部や左側にある「現在のフォルダー」ウィンドウで、作業中のフォルダを切り替えます。
    • コマンドcd (change directory) を使って移動することも可能です。
  2. スクリプト保存先
    • 自分の作業するプロジェクトフォルダや、パスが通ったディレクトリに保存すると便利です。
    • path に登録されていないフォルダでも、現在のフォルダにあれば直接呼び出せます。
  3. 名前の付け方
    • ファイル名は短くわかりやすい名前を心がける
    • 数字で始めない (MATLABの変数命名規則と同じく、先頭が数字だとエラーになる場合がある)

スクリプトとライブスクリプトを使った簡単な例

例: データ解析スクリプト

以下は、ベクトルxとyの回帰直線を求める簡単な例です。スクリプトとしてファイルにまとめて実行します。

これらをライブスクリプトにすれば、同じコードセル内でグラフをインライン表示できます。さらに、補足説明文や数式をリッチテキストで記述できる点もメリットです。

% データの作成
x = (1:10)';                        % xのデータ点を1から10までの列ベクトルで作成
y = [2.1, 3.5, 4.2, 5.0, 6.1, 6.8, 7.9, 9.2, 10.5, 11.3]'; % yの観測データを列ベクトルとして定義

% 線形回帰 (polyfitを使用)
p = polyfit(x, y, 1);               % x, yのデータを1次(線形)で回帰し、回帰係数を取得
y_fit = polyval(p, x);              % 回帰係数pを使い、xに対応するy値を計算

% プロット
plot(x, y, 'o', x, y_fit, '-');     % x, yを点('o')で、回帰直線y_fitを線('-')でプロット
legend('データ点','回帰直線');      % 凡例を追加してデータ点と回帰直線を区別
title('線形回帰の例');              % グラフのタイトルを設定
xlabel('x');                        % x軸のラベルを設定
ylabel('y');                        % y軸のラベルを設定

図6.データ解析スクリプトの例

まとめ

本記事では、MATLABにおけるスクリプトライブスクリプトといったファイル形式、ループと条件付きステートメントの基本的な書き方、そしてスクリプトの保存場所について解説しました。

  • スクリプト(*.mファイル)は、コードをまとめて実行したいときに最適
  • ライブスクリプト(*.mlxファイル)は、可視化・ドキュメント作成を一体化したいときに便利
  • ループと条件分岐を組み合わせることで、より複雑な処理を実装可能
  • スクリプトの保存場所を意識しておけば、ファイル管理や再利用がスムーズ

MATLABのプログラミングを効率的に行うためにも、これらの基本を押さえつつ、プロジェクトに合った構成を組んでみてください。

さらなる学習リソース

  • MathWorks公式サイト (日本語)
  • MATLABヘルプ「Scripts and Functions」
  • チュートリアル動画:ライブスクリプトの活用方法

キーワード再掲: プログラミング, スクリプ, スクリプト, ライブスクリプト, ループ, 条件付きステートメント, 保存場所