请问matlab gui中如和取得函数内部变量的值,然后在回调函数中使用?

2024-12-25 10:53:21
推荐回答(1个)
回答1:

  1. 你程序最后的callback表达式语法就是错的。

  2. 变量fun_handle是一条曲线的句柄,而不是函数句柄。这点相信你知道,但还是应该提醒一下:变量命名应该尽量避免引起误解。

  3. 设置line的x数据和y数据,必须保证二者长度相同,你单独设置x是不对的。

  4. 我没看明白你到底想要实现什么功能,请再说清楚点。

 

10-24补充:

  1. 如果还要继续提问或者有什么补充说明,建议用追问的方式,不要用补充,那样我回答也只能修改原来的回答,感觉比较别扭。

  2. 需要编写回调函数的程序最好写成function而非script,像你现在这种做法,把回调函数的内容全写成字符串,如果功能稍微复杂一点就很不好写。另外一个弊病是,回调函数用的是MATLAB的base工作区,执行会受基本工作区影响(也会反过来影响基本工作区)。

  3. 你的补充说明写得仍然不太清楚。看你写程序注释的习惯很不错,这种风格和你提问描述问题的草率不太相符。如果你稍微多用点心,把问题描述的足够清楚,那样既有助于你的问题尽快得到解决,也可以减少浪费我的时间。

  4. 我没搞太清楚你到底想要做什么,这里就简单点演示一下怎样在回调函数里获取以及修改曲线的数据(得到原来的x和y,并把x*2相当于横轴放大,y取平方),代码在你原有基础上修改(把p1=uicontrol(...)之后的替换成下面的代码),请自行对照看看实现方法,希望你能从中得到启发。

 

set(gcf,'userdata', fun_handle);
call_str = [ ...
        'hLine=get(gcbf,''user'');' ...
        'x=get(hLine,''x'');' ...
        'y=get(hLine,''y'');' ...
        'set(hLine,''x'',2*x,''y'',y.^2);' ...
    ];
p1 = uicontrol('parent',fig_handle,...       %创建【加号】按钮
               'string','加号',...
               'position',[60 100 50 30],...
               'callback',call_str);