我是Matlab GUI的新手 . 我有一个奇怪的问题 . 从matlab代码编辑器运行GUI代码(单击运行按钮)时,一切运行正常 . 但是,当我从matlab(左侧的文件浏览器)双击该文件时,我收到一个错误 .
这是Matlab所说的:
Attempt to reference field of non-structure array.
Error in GUI>scanButton_Callback (line 81) axes(handles.axes1);
Error in gui_mainfcn (line 96) feval(varargin);
Error in GUI (line 42) gui_mainfcn(gui_State, varargin);
Error in @(hObject,eventdata)GUI('scanButton_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
我试图绘制一个由GUI中'axes1'中的'main'脚本创建的图形 . 我在GUI代码中所做的唯一改变是:
% --- Executes on button press in scanButton.
function scanButton_Callback(hObject, eventdata, handles)
% hObject handle to scanButton (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes1);
main();
“main”脚本中创建绘图的代码是:
[x, y, z] = meshgrid(1:cSecDim, 1:cSecDim, 1:numSec);
scatter3(x(:),y(:),z(:),30,fullShape(:), 'fill');
我确信有一个简单的答案,说明错误发生的原因 . 请原谅我的无知 .
1 回答
双击GUI图形文件不会显示GUI . 它只是启动与GUI对应的数字,而不进行通常会发生的任何变量(特别是句柄)的初始化 .
据我所知,只有三种方式来运行GUI - 通过GUIDE(如果使用此工具设计GUI),通过MATLAB编辑器(如您所做),或通过键入命令窗口GUI的名称 . 例如,如果您的GUI m-和fig-文件名为 myGui.m 和 myGui.fig ,则可以从命令行运行此GUI
不需要任何扩展 .