2015-10-05 49 views
1

是否有可能讓matlab從函數返回多個圖形的句柄,然後用戶可以指定要顯示哪個圖形。例如:從函數返回的句柄繪製圖形

function [fha, fh2, fh3] = my_funct(x,y) 

    fh1 = figure(1); 
    plot(x,y); 

    fh2 = figure(2); 
    plot(x,y*3); 

    fh3 = figure(3); 
    plot(x,y*7); 
end 

其中x和y是任何輸入向量。

我意識到我可以放置一個輸入變量,指出從該函數返回哪個圖形,但我希望能夠讓用戶從列出的輸出中選擇他們想要的圖形。然後,如果有必要,他們可以看另一個數字。我希望能夠做這樣的事情:

GET(FH1,「show_me_the_figure」)

,這將顯示第一張圖中,從由函數返回的句柄。這可能嗎?

+2

'figure(fh2)'做這個工作嗎?請記住,無論如何,如果數字關閉,手柄將不起作用! –

+0

我覺得安德是現貨... – gregswiss

+0

是的,現貨。我已經使這些數字在函數中不可見(可見=關閉),所以您的建議很有用。 –

回答

2

你可以選擇人物使用figure(handle),顯示,如果手柄與另一figure()調用之前創建的。

0

而不是生成3個數字,你怎麼根據選擇繪製你指定的數字?由於handle=figure(number);將始終生成一個新窗口或覆蓋現有窗口。 在gui中,您可以在選擇回調中使用開關,該開關使用開關中的選定選項(簡單功能示例)。

function [fh] = my_funct(x,y,chosen) 

switch chosen 
    case 1 
     fh = figure(1); 
     plot(x,y); 
    case 2 
     fh = figure(1); 
     plot(x,y*3); 
    case 3 
     fh = figure(1); 
     plot(x,y*7); 
    otherwise 
     fh = figure(1); 
     disp('No Valid Choice') 
end 
+0

是的,這是我最初的,但如果我想看第二個數字,我需要重新運行該功能。由於該函數需要一些時間才能運行,所以在我的情況下這不是理想的。 –

+0

比你如何使用assignin或save來保存結果並使用單獨的函數來繪製所選圖形(s)? –