




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.PAGE.*****************实践教学*******************题目:基于MATLAB的数字电子琴设计专业____学号:指导成绩:摘要本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计。数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形〔正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃信号的具体实现方法。其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴。关键词:MATLAB;数字信号发生器;简易电子琴..目录TOC\o"1-2"\h\u前言1一、数字信号发生器21.1图形用户界面的简介21.2设计流程21.3波形实现的基本原理4二、电子琴的实现62.1简易数字电子琴的简介62.2实现原理6三、基于MATLAB的仿真及结果分析83.1GUI界面83.2编写M文件9总结19参考文献20附录21致谢34..前言MATLAB〔矩阵实验室是MatrixLaboratory的缩写,是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算机语言和交互式环境。MATLAB可以进行矩阵运算、绘制函数图像和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。Matlab环境下的图形用户界面〔GUI是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,可在图形用户界面内根据需要搭建图形,并对控件的回调函数进行编写,完成最完整的GUI界面编辑即可运行。本文主要利用MATLAB的图形用户界面设计数字信号发生器,在数字信号发生的基础上实现简易电子琴的设计。信号发生器又称信号源或振荡器,是一种能提供各种频率、波形和输出电平电信号的仪器,数字信号发生器只是信号发生器的一种,在生产实践和科技领域中有着广泛的应用。信号发生器按信号波形可分为正弦信号、函数〔波形信号、脉冲信号和随机信号发生器等四大类。能够产生多种波形,如正弦波、三角波、锯齿波、矩形波〔含方波、阶跃信号、脉冲信号的电路被称为函数信号发生器。本文设计了一种基于MATLAB图形用户界面的可以产生正弦波、方波、三角波、锯齿波、白噪声、脉冲信号、阶跃信号的虚拟数字信号发生器。一、数字信号发生器1.1图形用户界面的简介图形用户界面即GraphicalUserInterface,简称GUI,又称图形用户接口。Matlab环境下的图形用户界面〔GUI是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。用户通过一定的方法〔如鼠标或键盘选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。MATLAB的用户,在指令窗中运行demo打开那图形界面后,只要用鼠标进行选择和点击,就可产生丰富的内容。对图形用户界面的操作一般有两个部分,首先按照设计的原理、要求,根据需要选择适当的图形对象搭建合理的GUI界面;然后对每个控件的回调函数在M文件内进行编写,使搭建的GUI界面能够运行。数字信号发生器的设计所使用的工具即GUI界面,用到的图形对象有pushbutton、Aexs、Slider、StaticText、EditText。模拟了七种信号:正弦波、方波、三角波、阶跃信号、斜波信号、锯齿波以及白噪声信号。具体的实现原理如下。1.2设计流程根据设计的要求分析出数字信号发生器的GUI界面构图,然后在MATLAB的workplace界面中输入guide,打开GUI界面。在GUI界面中搭建好具体的数字信号发生器的界面,并对每个控件的回调函数进行编写、保存M文件。运行,若结果正确,再同一个GUI界面中搭建好电子琴的GUI界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M文件。运行,观察仿真结果。若数字信号发生器的仿真结果不正确,检查控件的回调函数,修改并保存M文件,再次运行观察仿真结果。具体的设计流程图如下:1.3波形实现的基本原理1.3.1正弦波的实现正弦信号的数学表达式如下:<1.1>其中:为幅值;为频率;为相位。在MATLAB中,由于处理对象均是离散的数字信号,将时间变量离散化并构造成一个一维数组用其中:为采样频率。但的值不能太大,否则波形显示会很慢。相应的正弦波信号的数字信号表达式为〔1.2幅值、频率、相位参数可以由用户界面上的滑动条或编辑框输入。在分别得到与的离散值后,用plot作图函数即可获得相应波形显示。1.3.2方波信号的实现方波信号的数学表达式为〔1.3该式可直接生成一个周期为,峰值为,占空比为的方波信号,的默认值为50%。在MATLAB中可得到幅值、频率、相位可调的方波信号函数〔1.41.3.3三角波信号的实现在MATLAB中,可以用函数直接生成一个三角波信号,该函数可生成一个周期为,峰值为,最大值出现在位置的三角波。利用该函数,可得到幅值、频率、相位可调的三角波信号函数〔1.51.3.4锯齿波信号的实现由于锯齿波信号与三角波信号相似,所以将函数中的参数值设为1,可得到锯齿波。该函数得到的幅值、频率、相位可调的锯齿波信号函数〔1.61.3.5脉冲信号的实现由于脉冲信号与方波信号波形相似,用方波信号函数函数为基础,将其函数值加1,可得到最大值为2,最小值为0的脉冲波形,原函数的参数可用来调节脉冲的宽度。用该函数,得到幅值、频率、相位可调的脉冲信号函数。〔1.71.3.6阶跃信号的实现由于阶跃信号比较特殊,可用函数直接表示,其函数表达式为〔1.81.3.7白噪声信号的实现白噪声信号是指功率谱密度在整个频域内均匀分布的噪声。白噪声的实现可借助于MATLAB中的函数,它的功能是产生一个均值为0,标准差为1的随机数列或矩阵函数,可得到一个均值为0,标准差为的维的随机矩阵。二、电子琴的实现2.1简易数字电子琴的简介在设计界面中包含A、B、C、D、E、F、G共7个琴键,由于低音频率区分不是很明显,此次课设选择的是中音频率,其中每个按键对应一个频率的正弦波信号,各按键对应的信号频率分别为392、440、494、523、587、659、698、784Hz。当用鼠标按下相应的键时发声,松开时发声停止,然后将数字信号写入声卡的缓冲区,由声卡播放出相应的声音。当用鼠标按下对应的键时即可发出相应频率的声音。2.2实现原理电子琴的实现基于之前设计的数字信号发生器,选择数字发生器产生的正弦波信号作为发声及显示波形,由回调函数和数字信号发生器结合起来,实现对波形的调用。每个键对应一定的频率,在各个键的回调函数中设置好频率及频谱显示,实现每个键有自己特定频率的功能,为了使最终仿真结果更好,选择音阶中音调高的频率作为调试频率。当键按下的时候,首先由相应的键和数字信号关联起来,随后将数字信号写入声卡的缓冲区,由声卡发出相应频率的声音,并显示波形及对应频率的频谱图,当键松开时声音即停止。此次电子琴的设计实现了正弦波显示、频谱显示以及发声的功能,从而实现虚拟电子琴的模仿功能。具体的实现流程图如下:开始开始打开MATLAB打开MATLAB搭建电子琴的GUI界面搭建电子琴的GUI界面执行并观察仿真结果执行并观察仿真结果结束结束图2.1电子琴的实现流程图三、基于MATLAB的仿真及结果分析3.1GUI界面3.1.1搭建数字信号发生器的GUI界面搭建的GUI界面如下图3.1:图3.1数字信号发生器的GUI界面3.1.2电子琴的GUI界面。搭建的数字电子琴GUI界面如图3.2所示:图3.2数字电子琴的GUI界面G该界面主要由琴键组成,每个按键对应一定的频率,模拟电子琴的发声功能,它的波形显示及频谱图在数字信号发生器中。3.2编写M文件3.2.1数字信号发生器的M文件〔1正弦信号的实现由正弦信号的数学表达式可知在程序中用到的具体表达式为〔3.1将时间变量离散化并构造成一个一维数组,要求采样频率不能太大,否则波形显示会很慢〔2方波信号的实现用函数直接生成一个方波信号,程序中使用的具体函数为〔3.2〔3三角波的实现函数直接生成一个三角波信号,程序中用到的具体实现函数为〔3.3〔4锯齿波信号的实现具体的函数实现形式为〔3.4〔5脉冲信号的实现抽样频率为8000,时间范围为[0,1],坐标抽为[0,a+1]。得到的幅值、频率、相位可调的脉冲信号函数。具体的函数〔3.5〔6阶跃信号的实现取1,A取1,t取[0,2],时间间隔为/100。阶跃信号的函数表达式为〔3.6〔7白噪声信号的实现白噪声是指功率谱密度在整个频域内均匀分布的噪声。白噪声的实现可借于MATLAB中的函数,产生一个均值为0,标准差为1的随机数列或矩阵该函数可得到一个均值为0,标准差为的维的随机矩阵。〔3.73.3仿真结果数字信号发生器的仿真结果如下:正弦波的仿真结果图3.3数字信号发生器的正弦波波形方波信号的仿真结果图3.4方波信号的波形〔3三角波信号仿真结果图3.5三角波信号的波形阶跃信号仿真结果图3.6阶跃信号的仿真结果〔5斜波信号图3.7斜波信号的仿真结果〔6锯齿波信号的仿真结果图3.8阶跃信号的仿真结果〔7白噪声仿真结果〔1按键A的仿真结果图3.10按下A键,电子琴演奏时的效果〔2按键B的仿真结果图3.11按下B键,电子琴演奏时的效果〔3按键C的仿真结果图3.12按下C键,电子琴演奏时的效果总结本次的课程设计的任务是基于MATLAB设计一个数字电子琴,首先设计一个数字信号发生器。数字信号发生器和电子琴的搭建都是在GUI界面中进行搭建的,在GUI界面中搭建好具体的数字信号发生器的界面,并对每个控件的回调函数进行编写、保存M文件。运行,若结果正确,再同一个GUI界面中搭建好电子琴的GUI界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M文件搭建完成之后对各个控件进行回调函数的编写。如果数字信号发生器的运行结果正确,则继续搭建电子琴否则修改直到正确为止。在本次的课程设计中,确实遇到了很多问题,但通过大家的帮助和自己的努力,最终实现所有的设计要求。本次课程设计也许还存在着一些不足,在以后学习生活中会更加努力,争取做得更好。参考文献[1]丁玉美.数字信号处理[M].XX电子科技大学出版社,2003,3.[2]朱冰莲.数字信号处理[M].电子工业出版社,2003,7.[3]程佩青.数字信号处理教程〔第二版>[M].北京:清华大学出版社,2001.[4]韩纪庆,张磊,郑铁然.语音信号处理[M].北京:清华大学出版社,2004.[5]王济,胡晓.MATLAB在振动信号处理中的应用[M].北京:中国水利水电出版社:知识产权出版社,2006.[6]周祥才,杨铮.基于MATLAB的信号采样与重构的实现[J].实验技术与管理,2007,24[7]张志涌等.精通MATLAB[M].北京:北京航空航天大学出版社,2003.[8]车子萍.基于Matlab的虚拟信号发生器设计[J].电脑学习,2010.1.[9]李益华.MATLAB辅助现代工程数字信号处理〔第2版.XX:XX电子科技大学出版社,2010[10]杨洁芳.基于MATLAB与声卡的低频信号发生器的设计与实现.电脑学习,2006附录:functionpushbutton16_Callback<hObject,eventdata,handles>Fs=8000;t=<0:2000>/Fs;pit=2*pi*t;a1=523;y=sin<a1*pit>;axes<handles.axes1>;plot<t,y>;title<'时域波形'>xlabel<'t'>ylabel<'y'>axis<[0,.01,-2,2]>axes<handles.axes2>;f=fft<y,1024>;f1=fftshift<f>;w1=513:1024;w=4000*<w1-512>/512;F=abs<f1<513:1024>>;plot<w,F>;title<'频谱图'>xlabel<'w'>ylabel<'F<w>'>sound<y>;functionpushbutton24_Callback<hObject,eventdata,handles>Fs=8000;t=<0:2000>/Fs;pit=2*pi*t;a2=587;y=sin<a2*pit>;axes<handles.axes1>;plot<t,y>;title<'时域波形'>xlabel<'t'>ylabel<'y'>axis<[0,.01,-2,2]>axes<handles.axes2>;f=fft<y,1024>;f1=fftshift<f>;w1=513:1024;w=4000*<w1-512>/512;F=abs<f1<513:1024>>;plot<w,F>;title<'频谱图'>xlabel<'w'>ylabel<'F<w>'>sound<y>;functionpushbutton25_Callback<hObject,eventdata,handles>Fs=8000;t=<0:2000>/Fs;pit=2*pi*t;a3=659;y=sin<a3*pit>;axes<handles.axes1>;plot<t,y>;title<'时域波形'>xlabel<'t'>ylabel<'y'>axis<[0,.01,-2,2]>axes<handles.axes2>;f=fft<y,1024>;f1=fftshift<f>;w1=513:1024;w=4000*<w1-512>/512;F=abs<f1<513:1024>>;plot<w,F>;title<'频谱图'>xlabel<'w'>ylabel<'F<w>'>sound<y>;functionpushbutton26_Callback<hObject,eventdata,handles>Fs=8000;t=<0:2000>/Fs;pit=2*pi*t;a4=698;y=sin<a4*pit>;axes<handles.axes1>;plot<t,y>;title<'时域波形'>xlabel<'t'>ylabel<'y'>axis<[0,.01,-2,2]>axes<handles.axes2>;faxes<handles.axes1>;plot<t,y>;title<'时域波形'>xlabel<'t'>ylabel<'y'>axis<[0,.01,-2,2]>axes<handles.axes2>;f=fft=0:1/fs:1.0;y=a*sin<2*pi*<f*t+q/360>>;axes<handles.axes1>;plot<t,y>;title<'时域波形'>;xlabel<'t'>;ylabel<'y'>;gridon;axis<[0,.01,-2,2]>;allback<hObject,eventdata,handles>t=<0:pi/100:2*pi>;t0=1;A=1;y=0*<t<t0>+A*<t>t0>;endt=0:1/fs:1.0;y=randn<size<t>>;title<'时域波形'>;plot<t,y>;title<'时域波形'>;xlabel<'t'>;ylabel<'y'>;gridon;axis<[0,Ts,-<a+1>,<a+1>]>;functionslider1_Callback<hObject,eventdata,handles>w=get<hObject,'value'>;set<handles.edit1,'string',num2str<w>>; functionslider1_CreateFcn<hObject,eventdata,handles>ifisequal<get<hObject,'BackgroundColor'>,get<0,'defaultUicontrolBackgroundColor'>>functionslider2_Callback<hObject,eventdata,handles>w=get<hObject,'value'>;set<handles.edit2,'string',num2str<w>>; functionslider2_CreateFcn<hObject,eventdata,handles>ifisequal<get<hObject,'BackgroundColor'>,get<0,'defaultUicontrolBackgroundColor'>>set<hObject,'BackgroundColor',[.9.9.9]>;endfunctio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学组学期教学计划
- 职业培训老师心得体会
- 信息技术公司研发岗位职责与挑战
- 艺术团体综合办公室安全职责
- 医学重点学科建设带头人的培训职责
- 小学英语三年级上册课堂管理计划
- 学校操场景观改造方案及技术措施
- 食品公司战略规划部门职责
- 英语教育资源共享师徒合作计划
- 化工厂防止人员中毒事故措施
- 邯郸2025年河北邯郸市春季博硕人才引进1438人笔试历年参考题库附带答案详解
- T-CALI 1101-2024 家用太阳能光伏照明产品-性能要求
- 中国特色社会主义政治经济学课件
- 临床医学个人能力提升
- 2025年焦虑症健康教育课件:创新与实践相结合
- 定额〔2025〕2号文-关于发布2020版电网技术改造及检修工程概预算定额2024年下半年价格
- 2025年部编版道德与法治小学三年级下册全册教案(含教学计划)
- 《普通高中体育与健康》(水平五)体能模块教学计划
- 主要施工机械设备、劳动力、设备材料投入计划及其保证措施
- 陕西省西安市名校2025届高三六校第一次联考数学试卷含解析
- 电商设计电子课件
评论
0/150
提交评论