私は、ユーザが、積分する変数を選択し、方程式を入力し、下限と上限を設定するmatlab GUIを作成しました。私のコードが押しボタンのコールバックの積分を計算するとき、私は理解していないエラーが発生します。MatLab GUIのトラブル:積分の計算
これは、エラーの原因となるコードの行です:
i1 = int(eval(get(handles.edit1,'string')),
(handles.respectvar),
get(handles.edit3),
get(handles.edit2)
);
%respactvar is the user-selected variable, and edit3 and edit2 are the lower and upper limits.
そして、これはエラーメッセージです:
Error using sym>tomupad (line 1135) Conversion to 'sym' from 'struct' is not possible.
Error in sym (line 151) S.s = tomupad(x);
Error in sym/int (line 142) b = sym(b);
Error in projectCALC>pushbutton1_Callback (line 376) i1=int(eval(get(handles.edit1,'string')),(handles.respectvar),get(handles.edit3),get(handles.edit2));
Error in gui_mainfcn (line 95) feval(varargin{:});
Error in projectCALC (line 42) gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)projectCALC('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback
ありがとうございます!
統合制限を含むエディットボックスから文字列を取得し、数値データ型に変換する必要があります。 'get(ハンドル。edit3) 'は、オブジェクトのプロパティの構造体を返します。 – excaza
また、 'eval'を使うことは、特にあなたがボックスに入力した何かを評価している場合、非効率で危険な*です。それが 'system'呼び出しの場合はどうなりますか? 'eval'の使用を避けることはできませんか? –
@AndrasDeakこれはセキュリティ上の懸念事項には言及していませんが、私はこの種のものに対して 'eval'を回避する方法はないと思います。私はほぼ肯定的です。 'str2func'は' eval'の単なるラッパーですが、MATLABをチェックすることはできません。 – excaza