MATLAB: 関数 m ファイル の使い方

informatics/matlab/m_file_function
8-3-2017 updated

  1. 概要: 関数 m ファイルとは
  2. 実例 1: 返り値のある関数

広告

概要: 関数 m ファイルとは

MATLAB では、通常複数のコマンドから成る一連の操作を 拡張子 .m をもつファイルに書きこんで、そのファイル名をコマンドとして使用できる (1)。Shell script の sh ファイルのようなものである。このファイルを m ファイル といい、コマンドの種類に応じてスクリプト m ファイルおよび関数 m ファイル に分けることができる。

スクリプト m ファイル (Script m file)

複数のコマンドが書き込まれた、いわばメインのプログラムである。

関数 m ファイル(function m file)

他のコマンド (通常はスクリプト m ファイルに書かれたコマンド) に従って特定の計算を行い、その結果を返す関数が書き込まれた m ファイルのこと。function という宣言から始まる。

行いたい一連の操作の中で、同じ計算が何度も出てくる場合は、その部分を別のファイルにして参照する形にした方が便利である。関数 m ファイルはこのような場合に使われる。


m file には、いくつか使用上の注意点がある (1)。

  • m file でスクリプトが長くなって改行したいときは、行末にピリオドを 3 つつける。
  • 同じ名前の複数の m file があると、干渉してエラーになる。

実例 1: 返り値のある関数

文献 2 には、2 つの数 a と b が与えられたときに、それらの四則演算を行う calc_4patterns という関数が例として挙げられている。これを少し改変して、3 つの変数 a, b, c に対してその和および積を計算する関数を書いて実行してみる。


function[result_add,result_multi] = calc_three(a,b,c)
result_add=a+b+c; result_multi=a*b*b;


これを calc_three.m として保存し、コマンドウィンドウで以下のように実行する。


a=2; b=3, c=4;
[result_add,result_multi] = calc_three(a,b,c)


result_add = 9、result_multi = 18 という結果が返ってくるはずである。

ここで、result_add および result_multi は、答えを格納する変数の名前に過ぎない ため、関数の名前と合わせる必要はない。つまり、


a=2; b=3, c=4;
[answer1, answer2] = calc_three(a,b,c)


とすれば、answer1 = 9、answer2 = 18 という答えが返ってくる。

一般化

以上を一般化すると、次のようになる。まず、

function [引数 (計算のために入力する数) を含む式] = ファイル名と同一の関数名 (引数1, 引数2...)
式の詳細;

という形で m ファイルを定義する。次に、

[答え1, 答え2] = 関数名 (引数)

とすれば、計算の結果を得ることができる。

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。

References

  1. 小林 2014a. 最新 MATLAB ハンドブック 第五版. 秀和システム.
  2. MATLAB-Sample 関数を定義する. Link.