前回はbreak, continueについて説明しました。今回は関数の作成について説明します。
簡単な関数の作成
以前関数を用いた計算で関数を使用する方法を説明しました。ほかにもこれまで様々なMATLABの関数を使用してきました。これまで使用してきた関数(sinやrand等)はMATLABがあらかじめ用意してくれていた関数(組み込み関数)です。
一方で繰り返し行う計算などは自分で定義することができます。早速、自分で関数を作成し使用します。いつも通りスクリプトファイルを作成して下記コードを実行してみてください。
x = 5;
y = calcSquare(x)
function sqr = calcSquare(x)
sqr = x^2;
end
上の例では4-6行目で関数を作成し、2行目で関数を呼び出しています。結果は上の図のようにコマンドウインドウにy = 25が表示されるはずです。
関数はスクリプトファイルで作成する場合、必ずスクリプトファイルの一番下に記述してください。
関数の作り方ですが、「function 戻り値 = 関数名(入力値)」から始まり、「end」で」囲われた部分に中身の処理を記述します。上の例では戻り値が「sqr」、関数名が「calcSqure」、入力値が「x」という関数を作成しました。中身の処理は、入力値xを2乗し戻り値sqrに代入するだけのシンプルな内容になっています。
2行目で「y = 関数名(入力値)」でcalcSqure関数を呼び出して、結果をyという変数に代入しています。以上が簡単な関数の作成方法でした。
複数入力、複数出力の関数を作成
関数には出力が複数のものや、入力が複数のものがあります。複数出力、複数出力の関数を作成する方法を説明します。下記のコードは2入力/2出力の関数を作成した例です。
x1 = 5;
x2 = 3;
[y1, y2] = calcAddTimes(x1, x2)
function [y1, y2] = calcAddTimes(x1,x2)
y1 = x1 + x2;
y2 = x1 * x2;
end
5行目で[y1, y2]のように記述するとy1,y2が出力となる複数出力の関数が作成できます。またcalcAddTimes(x1,x2)のように記述するとx1,x2が入力となる複数入力の関数ができます。
中身の処理はy1に足し算、y2に掛け算の結果を代入しているだけです。3行目でこの関数を呼び出し、x1, x2を入力としています。文末にセミコロンをつけていないためy1=8, y2=15がコマンドウインドウに表示され、意図通り動作していることが確認できます。
関数を別ファイルで作成
関数はスクリプトファイルの最後に記述すると説明しましたが、複数の関数を定義すると、スクリプトファイル自体が読みづらくなってしまうかもしれません。また、複数のスクリプトファイルから参照したい場合などは、別ファイルに関数を作成することをオススメします。
ここでは別ファイルに関数を記述する方法を紹介します。まずはじめに下の図のように新規→関数とクリックします。

作成した関数の中身を下記コードに書き換えて保存します。保存する名前は関数名と同じ「calcAddTimes.m」とします。
function [y1,y2] = calcAddTimes(x1,x2)
y1 = x1 + x2;
y2 = y1 * x2;
end
上記のように関数ファイルとして保存できていることを確認してください。
この状態でコマンドウインドウに下記コードを入力します。
[y1,y2] = calcAddTimes(4,2)
上の図のようにコマンドウインドウにy1 = 6, y2 = 12と表示されればOKです。別ファイルで作成した関数を使用することができます。
もちろん別のスクリプトファイルを作成して、上記のコードを使えば関数を使用することができます。ただし、スクリプトファイルを作成する場合には作成した関数ファイルと同じフォルダに保存するか関数ファイルまでのパスが通っていることを確認して実行してください。MATLABが関数ファイルを認識できていないと使用することができませんので注意が必要です。
パスの設定
先ほどパスについて触れましたので、MATLABでパスを設定する方法についても併せて説明します。MATLABでパスを追加すると追加したパスにおいてあるファイルや関数などが使用できるようになりとても便利です。作成した関数などはほかの関数ファイルとまとめて一つのフォルダなどに入れておき、MATLABで関数をまとめたフォルダへのパスを設定すると、いつでも使用することができとても便利になります。

右上の「パスの設定」をクリックし、「フォルダーを追加」からパスを追加したいフォルダを選択して保存します。
先ほど作成した関数を「funcs」というフォルダに移動しました。その状態で上のコードを実行すると下図のようにエラーが出ます。

パスの設定で「funcs」を追加した状態でもう一度実行すると、関数を使用することができます。

まとめ
今回は関数を作成する方法について説明しました。1入力1出力だけでなく、複数入力、複数出力についても作成が可能でした。また、関数ファイルの作成方法とパスの設定方法についても紹介しました。関数は繰り返し行う計算を1か所に記述できるためコードが簡潔になります。また、ファイルを分けることでコードが読みやすくなったり、また複数人で作業をする場合にも役に立ちます。ぜひ使い方を習得してください。
今回をもって、MATLABに関する基礎的な知識の紹介は一旦終わりにしたいと思います。今後は実践的な内容のご紹介をしていきますのでぜひそちらもご確認ください。
コメント