2016-03-04 109 views
1

我想要几乎所有功能于一身的功能,在主要功能和嵌套函数中创建GUI和必要变量以用作回调操作。从GUI访问嵌套函数

当我有

function[]=foo() 
A=1; 

uicontrol('style','pushbutton','callback','A=bar(A);') 

function[OUT]=bar(IN) 
OUT=IN+1; 

我得到错误:

Undefined function 'bar' for input arguments of type 'double'. 

Error while evaluating uicontrol Callback` 

如果foo是一个脚本,barbar.m文件时,它的工作原理定义。在我看来,回调在MATLAB工作空间中的默认变量和当前工作目录中的脚本/功能中使用。 如何访问嵌套调用函数(这里的功能bar

+0

我已阅读您的问题5次,我仍然无法掌握您正在尝试做什么。你是否可以扩展一下你对你正在试图做什么,做什么以及你不喜欢什么的重新解释? –

+1

我想调用创建GUI的函数内定义的函数和变量。 – Crowley

回答

2

为了定义回调调用函数(这里的变量A)定义的变量和函数,我发现使用anonymous functions最可靠的方法。也就是说,如果barfoo的嵌套函数,那么它已经可以访问A并且可以修改A

function = foo() 
    A = 1; 

    uicontrol('style', 'pushbutton', 'callback', @(s,e)bar()) 

    % This is a nested function that already has access to A 
    function bar() 
     A = A + 1; 
    end 

    % Let's call bar here to demonstrate it updates A 
    bar(); 
    disp(A); 
end 

另外,您的回调函数实际上不能将输出结果传递回控件的回调函数的工作区。如果你想返回一个结果,你可能想要1)将结果存储在图形对象的UserData中,2)使用我们已经显示的嵌套子函数,或者3)将自定义句柄对象的句柄传递给回拨(classdef object < handle

+0

这正是我正在寻找的。 – Crowley