你程序最后的callback表达式语法就是错的。
变量fun_handle是一条曲线的句柄,而不是函数句柄。这点相信你知道,但还是应该提醒一下:变量命名应该尽量避免引起误解。
设置line的x数据和y数据,必须保证二者长度相同,你单独设置x是不对的。
我没看明白你到底想要实现什么功能,请再说清楚点。
10-24补充:
如果还要继续提问或者有什么补充说明,建议用追问的方式,不要用补充,那样我回答也只能修改原来的回答,感觉比较别扭。
需要编写回调函数的程序最好写成function而非script,像你现在这种做法,把回调函数的内容全写成字符串,如果功能稍微复杂一点就很不好写。另外一个弊病是,回调函数用的是MATLAB的base工作区,执行会受基本工作区影响(也会反过来影响基本工作区)。
你的补充说明写得仍然不太清楚。看你写程序注释的习惯很不错,这种风格和你提问描述问题的草率不太相符。如果你稍微多用点心,把问题描述的足够清楚,那样既有助于你的问题尽快得到解决,也可以减少浪费我的时间。
我没搞太清楚你到底想要做什么,这里就简单点演示一下怎样在回调函数里获取以及修改曲线的数据(得到原来的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);