如何告诉我的MATLAB GUI我想使用外部.m文件在其上绘图?

时间:2013-07-17 16:36:05

标签: matlab graphics matlab-figure matlab-guide

我有一个GUI(使用GUIDE制作),其中有一个我可以绘制的轴。当我保存gui时,我有一个.fig文件和一个.m文件(名称为start_gui.m和start_gui.fig)。现在,我试图使用外部M文件在这些轴上绘图,我已经通过GUI处理。具体如下:

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的轴上进行绘图?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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