GUI-matlab中的UIControl回调
我有一个下面的GUI程序来运行Matlab2014b中的另一个GUI图形GUI-matlab中的UIControl回调,matlab,user-interface,matlab-guide,Matlab,User Interface,Matlab Guide,我有一个下面的GUI程序来运行Matlab2014b中的另一个GUI图形 % --- Executes on button press in Spectrometer function Spectrometer_Callback(hObject, eventdata, handles) % hObject handle to Spectrometer (see GCBO) % eventdata reserved - to be defined in a future version o
% --- Executes on button press in Spectrometer
function Spectrometer_Callback(hObject, eventdata, handles)
% hObject handle to Spectrometer (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
data = getappdata(gcbf, 'labdata');
% open Spectrometer only if it is not already open
if ~isfield(data,'hSpectrometer')
data.hSpectrometer=SpectrometerGui('handle',num2str(gcbf,16));
elseif ~ishandle(str2double(data.hSpectrometer))
data.hSpectrometer=SpectrometerGui('handle',num2str(gcbf,16));
end
setappdata(gcbf, 'labdata', data);
每次都会出现以下错误。你知道出错的原因是什么吗
Undefined function 'real' for input arguments of type 'matlab.ui.Figure'.
Error in num2str (line 132)
raw = cellPrintf(f, real(x), false);
Error in horus>Spectrometer_Callback (line 997)
data.hSpectrometer=SpectrometerGui('handle',num2str(gcbf,16));
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in lab (line 46)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)lab('Spectrometer_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback
您使用的是哪个版本的MATLAB,
gcbf
返回什么?您的代码假定它是一个数字,因此在回调中放置一个断点,并逐步遍历代码行以验证是否是这样。从R2014b开始,图形句柄现在是对象而不是数字指针,因此您尝试使用的方法将不起作用@Geoff R2014b在他问题的第一句话中。将新属性视为保留现有功能的变通方法。@excaza是正确的。阅读以更详细地理解。作为一种临时解决方法,Loren解释说:“可以使用double
函数将对象句柄转换为数字句柄。然后可以使用handle
函数将数字转换回对象句柄。我们不建议将此作为长期解决方案。”