matlab.engineでmatlab関数を使おうとすると、関数''(タイプ の入力変数)が未定義です。とエラーが出ます。
20 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
Etsuo Maeda
2020 年 4 月 13 日
回答がついていないようなので
ユーザ定義関数単体で各個には動作可能ということでですので、数値型をよく確認してみましょう
このあたりのトラブルシューティングを読んでみてください
以上、ご参考まで
参考
カテゴリ
Help Center および File Exchange で Python からの MATLAB の呼び出し についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!