如果单纯调用的话,直接在button->callback里面添加所需的函数;
axes(handlesaxes1) %指定‘tag’为‘axes1’的坐标轴
plot(x1,y1);
axes(handlesaxes2) %指定‘tag’为‘axes2’的坐标轴
plot(x2,y2);
。。。
这个x1 x2 y1 y2,你应该在程序中是传递过来的参数,或者是全局变量。
如果你一点都不懂,建议你买本MATLAB/GUI的书回去参考,很多基础的东西都有。从代码看,wavplay与sound两个命令都调用playsnd函数实现播放,只是对输入的支持不同。二者最大的区别是,wavplay支持同步播放(也就是同时播放多个声音,此时调用的是playsndb——这是一个mex函数)。
对wavplay和sound函数的代码进行分析可知,其采用的做法是一次性将音频数据写入播放设备,只能等着播放完才行,没有办法实现暂停、继续、停止之类的 *** 作。
要想实现具备上面说的这类播放能力,建议使用audioplayer函数。
我拿不准audioplayer函数是在哪个版本引入的,总之在2012b版里面有(有人说2011b里也有)。具体用法看一下帮助就行了,有例子,很容易掌握。可参见我以前的回答:
>
你程序最后的callback表达式语法就是错的。
变量fun_handle是一条曲线的句柄,而不是函数句柄。这点相信你知道,但还是应该提醒一下:变量命名应该尽量避免引起误解。
设置line的x数据和y数据,必须保证二者长度相同,你单独设置x是不对的。
我没看明白你到底想要实现什么功能,请再说清楚点。
10-24补充:
如果还要继续提问或者有什么补充说明,建议用追问的方式,不要用补充,那样我回答也只能修改原来的回答,感觉比较别扭。
需要编写回调函数的程序最好写成function而非script,像你现在这种做法,把回调函数的内容全写成字符串,如果功能稍微复杂一点就很不好写。另外一个弊病是,回调函数用的是MATLAB的base工作区,执行会受基本工作区影响(也会反过来影响基本工作区)。
你的补充说明写得仍然不太清楚。看你写程序注释的习惯很不错,这种风格和你提问描述问题的草率不太相符。如果你稍微多用点心,把问题描述的足够清楚,那样既有助于你的问题尽快得到解决,也可以减少浪费我的时间。
我没搞太清楚你到底想要做什么,这里就简单点演示一下怎样在回调函数里获取以及修改曲线的数据(得到原来的x和y,并把x2相当于横轴放大,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'',2x,''y'',y^2);'
];
p1 = uicontrol('parent',fig_handle, %创建加号按钮
'string','加号',
'position',[60 100 50 30],
'callback',call_str);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)