0

我有一个 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 

handle.cube_axes 是使用指南创建的 GUI 中的句柄名称。尽管通过了句柄,但它不允许我在 gui 中绘图。它抛出一个错误说:

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

start_gui.fig 是在 GUIDE 中生成的 GUI 图的名称。我如何让它在 start_gui.fig 的轴上绘制?

感谢所有的帮助!

4

2 回答 2

1

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

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

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

于 2013-07-17T16:49:33.417 回答
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.

于 2013-07-17T17:00:30.933 回答