matlab数字信号发生器和电子琴设计

matlab数字信号发生器和电子琴设计

ID:40750393

大小:532.50 KB

页数:17页

时间:2019-08-07

matlab数字信号发生器和电子琴设计_第1页
matlab数字信号发生器和电子琴设计_第2页
matlab数字信号发生器和电子琴设计_第3页
matlab数字信号发生器和电子琴设计_第4页
matlab数字信号发生器和电子琴设计_第5页
资源描述:

《matlab数字信号发生器和电子琴设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数字信号发生器和数字电子琴摘要Matlab是一个具有数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等功能的工程实用软件。其易于使用的视窗环境,在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。本文介绍了一种使用GUI工具箱,用Matlab实现虚拟数字信号发生器的设计。关键词Matlab;信号发生器;数字电子琴1概述MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件。可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用

2、于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。Matlab自带了强大的GUl工具[1]。在本文中,将利用Matlab的GUI工具,设计出数字信号发生器和数字电子琴。信号发生器又称信号源或振荡器,是一种能提供各种频率、波形和输出电平电信号,常用作测试的信号源或激励源的设备,在生产实践和科技领域中有着广泛的应用。按信号波形可分为

3、正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类[2]。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。本文设计了一种可以产生正弦波、余弦波、方波、三角波、锯齿波、白噪声的虚拟数字信号发生器。2技术路线虚拟数字信号发生器设计的流程图如图2.1:开始产生数字信号检测并接收用户输入:波形、幅值、频率、初始相位初始化显示波形图2.1数字信号发生器流程图在此基础上,将产生的数字信号写入声卡,即可播放出相应音阶的声音,实现电子琴的功能。3实现方法3.1数字信号发生器3.1.1搭建G

4、UI界面图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。Matlab凭借其强大的计算能力,系统集成能力以及图形处理能力,其图形用户接口(GUI)也日趋成熟。MatlabGUI的控件丰富,调用方便,可视化效果美观。GUI可以使得参数的输入和结果的输出可视化更高,操作更加方便。本次设计使用GUI搭建的界面如图3.1所示。图3.1数字信号发生器界面3.1.2编写M文件搭建好界面后保存,系统将自动生成M文件与Fig文

5、件,并且M文件内部已经按照GUI界面中组件的类别,自动生成了相应的模块调用函数。根据需要,我们对生成的各个函数进行补充,完成函数功能的实现及各个函数的调用关系。本次实验主要对控件的回调函数(callback)下写入相应的程序。下面这段程序(部分程序)实现了函数根据用户的输入生成不同的正弦波、余弦波、三角波、方波等,最终将波形显示在坐标轴1上。其中,sliderA,editA输入幅值,当用户在输入一个新的幅值时,A为对应幅值变量,发生相应改变,并判断选择的是何种波型,然后对相应的波型的幅值进行修改,最终通过绘图函数的调用将新波形显示在图上。同理,当我们逐渐改变频率和

6、相位时,波形也会对应发生变化,在此不再赘述。幅值滚动条的回调函数如下:functionsliderA_Callback(hObject,eventdata,handles)a=get(hObject,'value');set(handles.editA,'string',a);幅值可变文本的回调函数如下:functioneditA_Callback(hObject,eventdata,handles)val=get(hObject,'string');a=str2num(val);if~isempty(a)&&(val>=0&val<=20)set(handles

7、.sliderA,'value',a)end下拉菜单回调函数如下:functionpopupmenu1_Callback(hObject,eventdata,handles)A=str2num(get(handles.editA,'string'));f=str2num(get(handles.editF,'string'));d=str2num(get(handles.editD,'string'));fs=5000;T=0.05;dt=1.0/fs;N=T/dt;t=linspace(0,T,N);s=get(hObject,'value');switchsc

8、ase1y

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。