2013-07-17 57 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

感謝您的幫助! –