2015-10-05 30 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)? –