matlab.engineでmatlab関数を使おうとすると、関数''(タイプ の入力変数)が未定義です。とエラーが出ます。
20 views (last 30 days)
Show older comments
python3.7上で、matlab.engineを使用して、ユーザー定義関数のスクリプトを実行しようとすると、関数''(タイプ の入力変数)が未定義です。とエラーが出ます。
python上で起動させた関数と、そのスクリプト内に存在する別のユーザー定義関数では、このエラーが出ないのですが、さらにこの別のユーザー定義関数のスクリプト内での更に別のユーザー定義関数でこのエラーが発生します。(以下にそれぞれのスクリプトでの該当箇所を示します。)
最初、imversion.m 内で関数 getpartialsを呼び出した際も、「関数 'getpartials' (タイプ'double' の入力引数) が未定義です。」というエラーを出していましたが、一度eng.workspaceをpython上で用いて関数getpartialsの引数に用いる変数全てワークスペースに保存して以来、getpartialsではエラーを出さなくなりました。
imversion.m には関数locxyのような入れ子のようになっている関数を含めて、多くのユーザー定義関数を呼び出すので、困っております。
Pythonプログラム
eng = matlab.engine.start_matlab()
L_c,W_c,v0,tauc,ratio,ssqr3 = eng.inversion(Vp,Vs,topl,late,lone,depe,strike,dip,mlats,mlons,melevs,phas,d,nargout=6)
inversion.m
function [L_c,W_c,v0,tauc,ratio,ssqr3]=inversion(Vp,Vs,topl,late,lone,depe,strike,dip,mlats,mlons,melevs,phase,d)
[G]=getpartials(mlats,mlons,melevs,late,lone,depe,Vp,Vs,topl,phas,strike,dip);
getpartials.m
[dum]=locxy([late,lone,0]',origin); <==この関数の呼び出し時にエラー。 関数 'locxy' (タイプ'double' の入力引数) が未定義です。
0 Comments
Answers (1)
Etsuo Maeda
on 13 Apr 2020
回答がついていないようなので
ユーザ定義関数単体で各個には動作可能ということでですので、数値型をよく確認してみましょう
このあたりのトラブルシューティングを読んでみてください
以上、ご参考まで
See Also
Categories
Find more on Python からの MATLAB の呼び出し in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!