Matlab 如何指定何时返回函数的输出

Matlab 如何指定何时返回函数的输出,matlab,Matlab,假设我有以下功能: function result=myfun(varargin) result=[]; myFig=figure(); B1=uicontrol(myFig,'Style','pushbutton','String','done','Callback',{@done_Callback}); function done_Callback(varargin) result =10; delete(main

假设我有以下功能:

function result=myfun(varargin)    
result=[];    
myFig=figure();    
B1=uicontrol(myFig,'Style','pushbutton','String','done','Callback',{@done_Callback});    

    function done_Callback(varargin)  
        result =10;
        delete(mainFig);
    end
end   

我试图仅在执行按钮回调后返回输出。现在它立即返回一个空变量。我知道如何在guide GUIs中实现这一点,但我所有的项目都是在没有guide的情况下编写的。我假设我需要uiwait在某个地方,但不确定在哪里。

功能
uicontrol
只生成按钮,不等待按下按钮。否则,一个包含多个元素的完整GUI就不可能了——在第一个元素未被激活之前,您不能插入另一个元素,之后,第一个元素就不能再被激活。因此,GUI回调在主Matlab程序之外的另一个线程中执行,即在“事件队列”中

如果希望程序等待按钮按下,则必须明确编程:

function result=myfun(varargin)    
result=[];    
myFig=figure();    
B1=uicontrol(myFig,'Style','pushbutton','String','done','Callback',{@done_Callback});    
while isempty(result)
    drawnow
end

    function done_Callback(varargin)  
        result =10;
        fprintf('hi\n')
        delete(myFig);
    end
end   
drawnow
告诉Matlab它应该将执行时间分配给事件队列,这在Matlab忙时是不正常的,例如在循环时运行


有关更多信息,请查看和。

非常感谢。这正是我想要的。不客气。:)我只是把答案再编辑一次,也许你会觉得附加的信息很有趣。