运用matlab设计GUI:输入信号,选五种窗函数,调用外部函数,处理得出频谱图显示(先添加控件,编回调函数

运用matlab设计GUI:输入信号,选五种窗函数,调用外部函数,处理得出频谱图显示(先添加控件,编回调函数,第1张

太模糊了,问题也不是很清楚。
如果单纯调用的话,直接在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);


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12897705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存