バックナンバーはこちら。
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と似ていると思いきや、全く異なる仕組みっぽい。
- スクリプトに記載したとしても、明示的にワークスペースに関数を展開する必要がある。
- 仕組みは異なるが、関数として展開してしまえば使い方は一緒と言える。
バックナンバーはこちら。
コメント