バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/
はじめに
前回までで、各ツール、各言語に於いての基本的な行列演算を実施した。
今回からは、ちょっと行列的話から離れて各ツール、各言語のユーザ関数について。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
プログラミングをやりたい!

ちょっと、いいかな?

なに?

なんかこう、もっとプログラミング的な方に話をウェイトを置いてもらう方が良いというか助かるというか・・・。

元々はベクトルとか行列の知識が欲しいってことで始まったものだからなー。
各ツール、各言語はあくまでそれのサポート的な位置づけのつもりなんだけど・・・。

というか、フクさんの話は小難しすぎる!!

ベクトル、行列が小難しいだけだな。
私以外が説明したとしても、きっと小難しいぞ。

むぅ。

わかった。
もう少し、ツール、言語に寄せるような話の進め方にしよう。
何はともあれ関数化

おー!
じゃー何する?何する?

いろいろ処理が複雑になることを想定して、関数化あたりをやっておくか。

プログラムっぽい!
MATLABの場合

まずはMATLAB。
MATLABは関数名と同名のmスクリプトファイルを作成して、
その中に関数を実装する感じだな。

MATLABだったら分かるから僕が説明しよう!

ならば任せた。

test_funcって関数を実装する場合、
test_func.mファイルを作る必要がある。
MATLAB上から以下をやればOK。
>>edit test_func

そして、その中に関数を実装
% a,b,cが引数
% x,yが戻り値
function [x,y] = test_func(a,b,c)
x=a+b;
y=a-c;
end

戻り値は複数というかベクトルとして設定可能。
今回の場合だと2要素のベクトルを戻り値にしてる。
そして、実行結果が以下。
>> [A,B]=test_func(1,2,3)
A =
3
B =
-2

ちなみに、mスクリプトファイルは、カレントディレクトリかMATLABのパスにあるものを自動で探し当てるようだな。

やっぱり、関数名と同名のスクリプトファイル名にするってのがちょっと特殊だよねー。

MATLABから入った人からすると、それが普通ではあるのだけど、
まぁ、他のツール、言語ではあまり見ない仕様だから特殊ってのは間違いないな、
まとめ

まとめだよ。
- ベクトル、行列から離れて、少しプログラミングより話にシフト。
- 各ツール、各言語でユーザ関数の作成方法を確認する。
- MATLABは関数名と同名のmスクリプトファイル名にする必要あり。
バックナンバーはこちら。
コメント