停止main函数返回值

时间:2016-05-25 10:49:16

标签: matlab plot matlab-figure

考虑以下示例

function [B] = testtag
f = figure(1)
B = 1;
store_x = []
btn1 = uicontrol(f,'Style', 'pushbutton', 'String', 'tagpoints',...
        'Position', [5 5 60 20],...
        'Callback', @tagdata);   
btn2 = uicontrol(f,'Style', 'pushbutton', 'String', 'storeandreturn',...
        'Position', [70 5 80 20],...
        'Callback', @returnvalue);
y_axis = [randi([0,20],1,100)  randi([20,40],1,100) randi([0,20],1,100)];
x_axis = 1:300;
ax = subplot(1,1,1)
hplot = plot(x_axis,y_axis);
n = 1;

    function tagdata(source,callbackdata)
       [x,  ~] = ginput(2);                                              %saving indexs of the x axis or the time stamp of the place clicked 
       tic;  
       store_x(n:n + 1) = x(1:2);
       n = n +2;
       zoom on

    end    
    function returnvalue(source,callbackdata)
        B = store_x
        close(figure(1))
    end   
end

它绘制了一些随机数据并在图的末尾添加了两个按钮,当按下一个按钮时,它标记一对中的两个数据点并将它们存储在矩阵中,之后用户可以放大并标记更多对点,第二个按钮将所有数据点存储到主返回变量并关闭图形,现在这是我的问题,该函数显然会返回' 1'在输出中,因为main函数在回调被调用之前结束但我想要的是停止的函数,直到所有数据点都存储在返回变量中并且当按下第二个按钮时图形关闭而不使用while循环),有什么办法吗?

1 个答案:

答案 0 :(得分:1)

您希望使用uiwait来停止返回主函数。

添加

uiwait(f)

在您的主要功能结束时 - >这将等到数字关闭(或发出uiresume(f))继续并因此返回您的数据。