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

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

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

はじめに

前回は、Pythonの場合のユーザ関数作成方法について。
対話モードで作成する場合とスクリプトファイル上で作成する場合がある。
他のスクリプトファイルで定義した場合はimportを使用でき、エイリアスで名称変更は可能。

今回はScilabについて

登場人物

博識フクロウのフクさん

指差しフクロウ

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

Scilabの場合

太郎くん
太郎くん

次はScilabだね。

太郎くん
太郎くん

今までの流れからすると、
ScilabはMATLABと似てるパターンになるのかな?

フクさん
フクさん

ユーザ関数の仕組みについては別物と思った方がよいな。
まず、MATLABと異なり関数名とファイル名は同一にする必要はない。
しかし、execコマンドで事前にScilab内のワークスペースに関数を事前展開しておく必要はあるな。

太郎くん
太郎くん

よくわからんけど、全く別ものってことだな。

スクリプトファイル作成

フクさん
フクさん

まずはスクリプトファイルを作成する。
ここはMATLABと似てて、editコマンドを使う。

-->edit test_func
フクさん
フクさん

これでtest_func.sciというスクリプトファイルができるので、
その中で関数を定義する。
関数の書き方自体はMATLABとそっくりだが、
関数を閉じる行はendfunctionと記載する必要がある。

// a,b,cが引数
// x,yが戻り値
function [x,y] = test_func(a,b,c)
    x=a+b
    y=a-c
endfunction

ワークスペースに展開

フクさん
フクさん

そして、execでスクリプトを実行
これで、この関数を呼び出すことができる。

-->exec test_func.sci
太郎くん
太郎くん

スクリプトを実行した後に関数を呼び出せるってのが妙な感じだな・・・。

フクさん
フクさん

まぁ、明示的に展開されている必要があるのだろう。

関数実行

フクさん
フクさん

そして関数の実行。
ここらへんは他のツール、言語と似たようなもんだな。

-->[A,B]=test_func(1,2,3);
 
-->[A,B]
 ans  =
 
    3.  - 2.  
太郎くん
太郎くん

作り方さえわかれば、割と似たような使い方で済みそうだね。

まとめ

フクさん
フクさん

まとめだよ。

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

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

コメント

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