2013-07-17 32 views
0

我有一个GUI(使用GUIDE制作),其中有一个可以绘制的轴。当我保存gui时,我有一个.fig文件和一个.m文件(名称分别为start_gui.m和start_gui.fig)。现在,我正尝试使用一个外部M文件来绘制这些轴,我已经通过这个文件传递了GUI句柄。如下所示:如何告诉我的MATLAB GUI使用外部.m文件来绘制它?

function cube_rotate(angle1,angle2,handles) 
    gcf=start_gui.fig; %this is the name of the gui.fig file in GUIDE 
    set(gcf,'CurrentAxes',handles.cube_axes)%this allows us to plot on the GUI 
     %plot something 
end 

handles.cube_axes是使用指南创建的GUI中的句柄的名称。尽管通过手柄,它不会让我在gui中阴谋。它抛出一个错误说:

???未定义变量“start_gui”或类“start_gui.fig”。

start_gui.fig是在GUIDE中生成的GUI图形的名称。 如何将它绘制在start_gui.fig的坐标轴中?

感谢您的帮助!

回答

1

您犯了一些错误。第一个是指没有单引号的文件名来表示一个字符串。第二种方法是试图通过将其分配为名为gcf的变量来打开现有图形。这只会给你一个变量gcf其中包含字符串'start_gui.fig'

相反,打开该图,使用此命令:

fH = hgload('start_gui.fig'); 
% Then find/assign the axes handle (assuming you only have one axes in the figure): 
aH = findobj(fH,'Type','axes'); 
% And finally plot to the axes: 
plot(aH,0:.1:2*pi,sin(0:.1:2*pi)); 

在辅助记,有没有你不使用MATLAB产生的M-文件执行此功能的原因是什么?通过使用自动生成的M文件,您将可以访问句柄结构,而不是使用findobj

+0

谢谢!是的,为什么我需要它在外部m文件中有特定的原因。 :-) –

+0

不是,你的意思是说我没有传递GUI句柄吗?我不能以任何方式使用它们吗? –

1

你得到的错误是因为你的第二行:gcf=start_gui.fig;

它寻找一个名为start_gui变量,你没有。 (start_gui.fig是文件名,而不是变量。)

要解决您的绘图问题,请参阅this Mathworks支持文章。

+0

感谢您的帮助! –