pythonから指定フォルダに存在するMATLABスクリプトを呼び出したい
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
金太郎 細野
el 25 de Mzo. de 2022
Comentada: Kojiro Saito
el 25 de Mzo. de 2022
pythonプログラムからMatlabエンジンAPIを用いて、Matlabスクリプト(mファイル)の実行を行う際、以下URLにあるように
import matlab.engine
eng = matlab.engine.start_matlab()
eng.triarea(nargout=0)
として呼び出すことで、triarea.m ファイルが実行出来ると思います。
この時、pythonプログラムのpyファイルと同階層(同フォルダ)にmファイルが存在しないと、'triarea'が認識されません。
pyファイルと同階層ではない、指定フォルダに存在するMatlabスクリプトを呼び出して実行することは可能でしょうか?
0 comentarios
Respuesta aceptada
Kojiro Saito
el 25 de Mzo. de 2022
Editada: Kojiro Saito
el 25 de Mzo. de 2022
addpathするか、起動時のオプション「-sd」を付けるかの方法があります。
triarea.mが C:\Code フォルダにあるとします。
(1) addpathする方法
import matlab.engine
eng = matlab.engine.start_matlab()
eng.addpath('C:\Code')
eng.triarea(nargout=0)
(2) 起動時のオプション「-sd」を付ける方法
import matlab.engine
eng = matlab.engine.start_matlab('-sd "C:\Code"')
eng.triarea(nargout=0)
start_matlabにはMATLABのWindowsでの起動オプションやLinuxの起動オプション、macOSの起動オプションを渡せるので、共通で使える「-sdオプション」で現在のフォルダを指定する方法です。
(1)のほうが手軽ですし、複数のフォルダを追加できるので良いと思います。
2 comentarios
Kojiro Saito
el 25 de Mzo. de 2022
eval関数を使ってスクリプトのファイル名を動的に渡せます。
import matlab.engine
def MatlabAnalysis(fileName):
eng = matlab.engine.start_matlab()
eng.addpath('C:\Code')
eng.eval(fileName, nargout=0)
MatlabAnalysis('triarea')
入力引数を渡す場合はeval('triarea(1.0, 5.0)')のように括弧で渡す必要があるので、以下のようにcommand_to_execの文字列をfileNameと結合してからevalを実行します。
import matlab.engine
def MatlabAnalysis(fileName):
eng = matlab.engine.start_matlab()
eng.addpath('C:\Code')
command_to_exec = fileName + '(1.0, 5.0)'
out = eng.eval(command_to_exec, nargout=1)
print(out)
MatlabAnalysis('triarea')
Más respuestas (0)
Ver también
Categorías
Más información sobre Python からの MATLAB の呼び出し en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!