我是Matlab GUI的新手。我有一个奇怪的问题。从matlab代码编辑器运行GUI代码(单击运行按钮)时,一切运行正常。但是,当我从matlab(左侧的文件浏览器)双击该文件时,我收到一个错误。
这是Matlab所说的:
尝试引用非结构数组的字段。
GUI中的错误> scanButton_Callback(第81行) 轴(handles.axes1);
gui_mainfcn出错(第96行) feval(varargin {:});
GUI中的错误(第42行) gui_mainfcn(gui_State,varargin {:});
@(hObject,eventdata)GUI中的错误(' scanButton_Callback',hObject,eventdata,guidata(hObject))
评估uicontrol回调时出错
我正在尝试绘制由' main'创建的图表。脚本在'轴1'在GUI中。 我在GUI代码中唯一的变化是:
%---在scanButton按下按钮时执行。
function scanButton_Callback(hObject,eventdata,handles)
%h对scanButton的句柄(参见GCBO)
保留%eventdata - 将在未来版本的MATLAB中定义
%处理带句柄和用户数据的结构(请参阅GUIDATA)
轴(handles.axes1);
主要();
' main'中的代码创建绘图的脚本是:
[x,y,z] = meshgrid(1:cSecDim,1:cSecDim,1:numSec);
scatter3(x(:),y(:),z(:),30,fullShape(:),' fill');
我确信有一个简单的答案,说明错误发生的原因。请原谅我的无知。
答案 0 :(得分:1)
双击GUI fig 文件不会“运行”GUI。它只是启动与GUI对应的数字,而不进行通常会发生的任何变量初始化(特别是句柄)。
据我所知,只有三种方式来运行GUI - 通过GUIDE(如果使用此工具设计GUI),通过MATLAB编辑器(如您所做),或从命令窗口通过键入GUI的名称。例如,如果您的GUI m-和fig-文件名为 myGui.m 和 myGui.fig ,则可以从命令行运行此GUI
myGui
无需任何扩展。