バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回までで、各ツール、各言語に於いての基本的な行列演算を実施した。
今回からは、ちょっと行列的話から離れて各ツール、各言語のユーザ関数について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
プログラミングをやりたい!
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
ちょっと、いいかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
なに?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
なんかこう、もっとプログラミング的な方に話をウェイトを置いてもらう方が良いというか助かるというか・・・。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
元々はベクトルとか行列の知識が欲しいってことで始まったものだからなー。
各ツール、各言語はあくまでそれのサポート的な位置づけのつもりなんだけど・・・。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」11アップ.png)
というか、フクさんの話は小難しすぎる!!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/びっくりフクロウ.png)
ベクトル、行列が小難しいだけだな。
私以外が説明したとしても、きっと小難しいぞ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
むぅ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
わかった。
もう少し、ツール、言語に寄せるような話の進め方にしよう。
何はともあれ関数化
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
おー!
じゃー何する?何する?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
いろいろ処理が複雑になることを想定して、関数化あたりをやっておくか。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
プログラムっぽい!
MATLABの場合
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まずはMATLAB。
MATLABは関数名と同名のmスクリプトファイルを作成して、
その中に関数を実装する感じだな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
MATLABだったら分かるから僕が説明しよう!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
ならば任せた。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
test_funcって関数を実装する場合、
test_func.mファイルを作る必要がある。
MATLAB上から以下をやればOK。
>>edit test_func
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
そして、その中に関数を実装
% a,b,cが引数
% x,yが戻り値
function [x,y] = test_func(a,b,c)
x=a+b;
y=a-c;
end
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
戻り値は複数というかベクトルとして設定可能。
今回の場合だと2要素のベクトルを戻り値にしてる。
そして、実行結果が以下。
>> [A,B]=test_func(1,2,3)
A =
3
B =
-2
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
ちなみに、mスクリプトファイルは、カレントディレクトリかMATLABのパスにあるものを自動で探し当てるようだな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
やっぱり、関数名と同名のスクリプトファイル名にするってのがちょっと特殊だよねー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
MATLABから入った人からすると、それが普通ではあるのだけど、
まぁ、他のツール、言語ではあまり見ない仕様だから特殊ってのは間違いないな、
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- ベクトル、行列から離れて、少しプログラミングより話にシフト。
- 各ツール、各言語でユーザ関数の作成方法を確認する。
- MATLABは関数名と同名のmスクリプトファイル名にする必要あり。
バックナンバーはこちら。
コメント