我已經創建了一個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
謝謝!
您需要從包含集成限制的編輯框中獲取字符串,並將它們轉換爲數字數據類型。 '得到(句柄。edit3)'只會返回對象屬性的結構。 – excaza
此外,使用'eval'效率低且不安全*,特別是如果您正在評估用戶在框中輸入的內容。如果這是一個「系統」調用呢?你確定你不能避免使用'eval'嗎? –
@AndrasDeak雖然這並沒有解決安全問題,但我認爲對於這種事情我沒有辦法解決'eval'。我幾乎肯定'str2func'只是'eval'的一個包裝器,但我沒有MATLAB可用來檢查。 – excaza