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

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

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia-backnumber/

はじめに

前回は、Scilabの場合のユーザ関数作成方法について実施。
MATLABと似ていると思いきや、全く異なる仕組みっぽい。
スクリプトに記載したとしても、明示的にワークスペースに関数を展開する必要がある。

今回はJuliaについて。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

Juliaの場合

フクさん
フクさん

毎度言ってる気がするが、Juliaについては素人なんで。

太郎くん
太郎くん

Juliaの話になるたびに言ってるね。

フクさん
フクさん

というわけで、抜け漏れはあるという前提で一応調べてきた。
イメージ的にはPythonに近いと思ってよいかもしれない。
こんな感じでやればOKだろう。

対話モードで関数定義

> function test_func(a,b,c)
        x=a+b
        y=a-c
        return x, y
       end
test_func (generic function with 1 method)

> (A,B)=test_func(1,2,3)
(3, -2)
フクさん
フクさん

funcionで初めてendで終了だな。
Pythonと違ってインデントは気にしなくてOKだ。
まぁ見やすさの都合で入れるべきではあるけどね。
あと、明示的にreturn分を使わない場合は、最後に更新した変数が戻り値になるな。
今回のように2変数を戻したい場合は、明示的にreturn文を使うことになるだろう。

太郎くん
太郎くん

これまた特殊な仕様が・・・。

※ 必ずreturnが必要ということもなく、関数の最後に変数を置くことでタプルとして戻せる。

> function test_func(a,b,c)
        x=a+b
        y=a-c
        x, y
       end
test_func (generic function with 1 method)

> (A,B)=test_func(1,2,3)
(3, -2)

別ファイルで関数定義

フクさん
フクさん

別ファイルで先ほどの関数を記載し、

# a,b,cが引数
# x,yが戻り値
function test_func(a,b,c)
	x=a+b
	y=a-c
	return x, y
end
フクさん
フクさん

これをtest.jlというファイルとしよう。
このを利用するにはincludeを使用する。

> include("test.jl")
test_func (generic function with 1 method)

> (A,B)=test_func(1,2,3)
(3, -2)
太郎くん
太郎くん

これはなんかC言語っぽい。

フクさん
フクさん

まぁ似たような動きはするな。

フクさん
フクさん

あと、Juliaの場合、moduleを使用するパターンもあるのだが、
これはMATLABやPythonのclassに相当する。
classについては、本シリーズでは触れてないので、Juliaでもここでは省略しておこう。

まとめ

フクさん
フクさん

まとめだよ。

  • Juliaの場合の場合のユーザ関数作成方法について実施。
    • 基本的にはPythonに似ている。
    • 2変数以上を戻す場合は、明示的にreturn文を使用する必要がある。
  • 他のファイルで関数を定義している場合はinclude文を使用する。
    • C言語のincludeに似ている。

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

コメント

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