Matlab从函数中调用函数

时间:2012-05-24 20:03:12

标签: function matlab

我有两个功能:

function [] = func_one()
     S.pb = uicontrol('style','push','unit','pix','posit',[20 20 260 30],
                      'string','Print Choices','callback',{@func_two,S});

我有第二个功能:

   function [a] = func_two(varargin)
       a = 'alon';
   end

我希望func_one返回a的变量func_two。我该怎么办呢?

我试过了:

 function [a] = func_one()

但我想我必须做一些'回调',{@ func_two,S})

谢谢大家!

2 个答案:

答案 0 :(得分:3)

正如您所说,如果您希望func_onea中返回值func_two,那么在不使用回调的情况下执行此操作的最简单方法是:

function [a] = func_one()
     S.pb = uicontrol('style','push','unit','pix','posit',[20 20 260 30],
                      'string','Print Choices');

     a = func_two()

以上内容可让您说运行a=func_onea将是字符串'alon'

如果您真的希望func_two()成为按钮的回调,并且希望在a='alon'的工作区中分配func_one(调用{{1}的函数然后把它放在func_two

func_two

如果两者都不是您想要的,那么也许您可以指出为什么assignin('caller','a',a) 返回func_one返回的内容 - 就像您希望与GUI一样的确切交互以及它如何不同从你实际经历的。

答案 1 :(得分:2)

如果您是以编程方式设计GUI,我建议您使用嵌套函数share data。例如:

function IncrementExample()
    x = 0;
    uicontrol('Style','pushbutton', 'String','(0)', ...
        'Callback',@callback);

    function callback(o,e)
        %# you can access the variable x in here
        x = x + 1;

        %# update button text
        set(o, 'String',sprintf('(%d)',x))
        drawnow
    end
end

enter image description here