MATLAB,Python,Scilab,Julia比較 その35【ユーザ関数①】

MATLAB,Python,Scilab,Julia比較 その35【ユーザ関数①】 数値計算
MATLAB,Python,Scilab,Julia比較 その35【ユーザ関数①】

バックナンバーはこちら。
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スクリプトファイル名にする必要あり。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました