启动GUIDE中内置的GUI时出错

17次观看(过去30天)
丹尼尔
丹尼尔 2011年7月18日
我有一个GUI,我已经工作了一段时间。
它运行得非常好,直到我对GUIDE中的图形做了一些小的更改。
现在,当我试图启动GUI时,我得到以下错误:
???struct2handle值必须是有限的且非nan
错误在==> hgloadStructDbl at 97 h = struct2handle(hgS, parent, flags{:});
错误在==> hgload at 69 [h, OldProps] = hgloadStructDbl(FigData, fullpath, VerNum, LoadAll, overridprops);
==> openfig at 72错误[fig, savedvisible] = hgload(filename, struct('Visible','off'));
错误在==> gui_mainfcn>local_openfig at 286 gui_hFigure = openfig(name, singleton, visible);
错误在==> gui_mainfcn在159 gui_hFigure = local_openfig。gui_Name、gui_SingletonOpt gui_Visible);
错误在==>控制台在43 gui_mainfcn(gui_State, varargin{:});
我也得到类似的错误,当我试图打开指南中的图形文件。
在我向GUI添加两个按钮后,问题出现了。
任何帮助都将非常感激,因为这个问题把我完全难住了。

答案(4)

丹尼尔Higginbottom
丹尼尔Higginbottom 2012年2月28日
我最终解决了这个错误,并发现了它的原因。
在编辑Guide中的GUI时,我缩小了一个包含控件的ui面板,这样我就可以专注于图形的其他方面。在这个尺寸下,GUI上的控件被赋予了高度、宽度和字体大小的NaN属性值。在指南中很容易纠正这一点,但如果你错误地保存了图并关闭了指南,那么这个图就被损坏了,不能运行或打开编辑。
为了解决这个问题,我在hgloadStructDbl的第97行错误处停了下来,检查了结构hgS。这包含GUI中所有项的属性值。我通过挖掘找到了NaN值(这需要相当多的时间,这是一个复杂的数字!),并添加了一些代码行,将这些值替换为有限的值。
如。hgS.children(1)定格(1)定格(4). properties。位置= [0.1,0.1,0.1,0.1]
然后我可以在Guide中打开图形,固定位置,并保存一个新版本。之后,我返回hgloadStructDbl正常。
1评论
近红外光谱卡普兰
近红外光谱卡普兰 2019年8月1日
为我工作!
在"hgloadStructDbl"中,我在行上添加了一个断点:
h = struct2handle(hgS, parent, flags{:});
我使用"assignin"来保存结构和标志:
assignin (“基地”“GuiStruct”硫化汞)
assignin (“基地”“旗帜”、旗帜)
将工作空间中的结构和标志保存为.mat文件。
然后我创建了一个图形,并在“GuiStruct”中碾过儿童,直到我发现腐败的儿童。
struct2handle (GuiStruct.children(1)、图)
struct2handle (GuiStruct.children(2),图)
struct2handle (GuiStruct.children(7)、图)
第七个孩子犯了一个错误。
所以我从结构中清除它,重新创建GUI,保存它并在指南中打开它。
GuiStruct.children (7) = [];
图= struct2handle(GuiStruct, 0,“转换”);
集(图,“可见”“上”
savefig(图,“GUIRestore”

登录发表评论。


弗里德里希
弗里德里希 2011年12月21日
你好,
我能记得这个错误。我认为这是由于一些uicontrol和他们在R2009a的属性。在保存之前,请确保所有uicontrol对象都具有有限和非nan位置。
您可以使用Object浏览器来识别未完全显示或位于.fig文件中面板后面的对象。

肖恩·德Wolski
肖恩·德Wolski 2011年7月18日
  • 小的改变是什么?
  • 你是否删除了带有创建/回调函数的内容?
  • 如何调用函数?
  • 你移动/重命名/删除等了吗.fig文件?

马修Arthington
马修Arthington 2011年12月21日
我还在第97行得到了hgloadStructDbl的错误。如果我在调试模式中跨过我的命令,我会得到错误(Matlab会停止,因为我总是在启用错误时停止,在hgloadStructDbl中的第97行,但它不会告诉我哪里出错了,甚至不会让我知道我输入了一个新函数)。这是我的命令:
[s, r] =系统(“阴谋\ BodePlot.fig”);
如果我没有在调试模式下运行它,那么我就会在命令行上得到消息:“Error Writing Pipe.”,但从Matlab中就没有别的了。这个命令不能正确执行,但是Matlab继续运行。我运行的是Windows 7 Matlab 2010b。
更改我的命令为
打开(“阴谋\ BodePlot.fig”)
已经取代了我想要的功能,但它并没有解决上述问题。

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!