基于MATLAB的数字电子琴设计.doc
《基于MATLAB的数字电子琴设计.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的数字电子琴设计.doc(17页珍藏版)》请在咨信网上搜索。
***************** 实践教学 ******************* 题 目: 基于MATLAB的数字电子琴设计 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 摘要 本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计.数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生.在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃)信号的具体实现方法。其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴。 关键词:MATLAB;数字信号发生器;简易电子琴 目录 前言1 一、数字信号发生器2 1。1图形用户界面的简介2 1。2设计流程2 1。3波形实现的基本原理4 二、电子琴的实现6 2.1简易数字电子琴的简介6 2.2实现原理6 三、基于MATLAB的仿真及结果分析8 3。1 GUI界面8 3。2编写M文件9 总结19 参考文献20 附录21 致谢34 前言 MATLAB(矩阵实验室)是Matrix Laboratory的缩写,是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算机语言和交互式环境。MATLAB可以进行矩阵运算、绘制函数图像和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,可在图形用户界面内根据需要搭建图形,并对控件的回调函数进行编写,完成最完整的GUI界面编辑即可运行.本文主要利用MATLAB的图形用户界面设计数字信号发生器,在数字信号发生的基础上实现简易电子琴的设计。 信号发生器又称信号源或振荡器,是一种能提供各种频率、波形和输出电平电信号的仪器,数字信号发生器只是信号发生器的一种,在生产实践和科技领域中有着广泛的应用。信号发生器按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类.能够产生多种波形,如正弦波、三角波、锯齿波、矩形波(含方波)、阶跃信号、脉冲信号的电路被称为函数信号发生器.本文设计了一种基于MATLAB图形用户界面的可以产生正弦波、方波、三角波、锯齿波、白噪声、脉冲信号、阶跃信号的虚拟数字信号发生器。 一、数字信号发生器 1.1图形用户界面的简介 图形用户界面即Graphical User Interface,简称 GUI,又称图形用户接口。Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面. 用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。MATLAB的用户,在指令窗中运行demo 打开那图形界面后,只要用鼠标进行选择和点击, 就可产生丰富的内容。对图形用户界面的操作一般有两个部分,首先按照设计的原理、要求,根据需要选择适当的图形对象搭建合理的GUI界面;然后对每个控件的回调函数在M文件内进行编写,使搭建的GUI界面能够运行。 数字信号发生器的设计所使用的工具即GUI界面,用到的图形对象有pushbutton、Aexs、Slider、Static Text、Edit Text.模拟了七种信号:正弦波、方波、三角波、阶跃信号、斜波信号、锯齿波以及白噪声信号.具体的实现原理如下. 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。4) 1.3。3三角波信号的实现 在MATLAB中,可以用函数直接生成一个三角波信号,该函数可生成一个周期为,峰值为,最大值出现在位置的三角波。利用该函数,可得到幅值、频率、相位可调的三角波信号函数 (1.5) 1。3.4锯齿波信号的实现 由于锯齿波信号与三角波信号相似,所以将函数中的参数值设为1,可得到锯齿波。该函数得到的幅值、频率、相位可调的锯齿波信号函数 (1。6) 1。3。5脉冲信号的实现 由于脉冲信号与方波信号波形相似,用方波信号函数函数为基础,将其函数值加1,可得到最大值为2,最小值为0的脉冲波形,原函数的参数可用来调节脉冲的宽度.用该函数,得到幅值、频率、相位可调的脉冲信号函数. (1。7) 1。3.6阶跃信号的实现 由于阶跃信号比较特殊,可用函数直接表示,其函数表达式为 (1.8) 1.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 搭建电子琴的GUI界面 执行并观察仿真结果 结束 图2.1 电子琴的实现流程图 三、基于MATLAB的仿真及结果分析 3。1 GUI界面 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.7) 3.3仿真结果 数字信号发生器的仿真结果如下: (1) 正弦波的仿真结果 图3.3 数字信号发生器的正弦波波形 (2) 方波信号的仿真结果 图3.4方波信号的波形 (3) 三角波信号仿真结果 图3.5 三角波信号的波形 (4) 阶跃信号仿真结果 图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]。 西安电子科技大学出版社,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版). 西安:西安电子科技大学出版社,2010 [10] 杨洁芳。 基于MATLAB与声卡的低频信号发生器的设计与实现。 电脑学习,2006 附录: function pushbutton16_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); function pushbutton24_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); function pushbutton25_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); function pushbutton26_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); f axes (handles.axes1); plot(t,y); title('时域波形’) xlabel(’t') ylabel(’y’) axis([0,。01,-2,2]) axes (handles。axes2); f=ff t=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'); grid on; 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); end t=0:1/fs:1。0; y=randn(size(t)); title('时域波形’); plot(t,y); title('时域波形'); xlabel(’t’); ylabel(’y’); grid on; axis([0,Ts,—(a+1),(a+1)]); function slider1_Callback(hObject, eventdata, handles) w=get(hObject,’value’); set(handles.edit1,’string',num2str(w)); function slider1_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’)) function slider2_Callback(hObject, eventdata, handles) w=get(hObject,'value’); set(handles。edit2,'string’,num2str(w)); function slider2_CreateFcn(hObject, eventdata, handles) if isequal(get(hObject,’BackgroundColor'), get(0,'defaultUicontrolBackgroundColor’)) set(hObject,’BackgroundColor’,[。9 .9 。9]); end function edit1_Callback(hObject, eventdata, handles) v=get(hObject,’string’); set(handles。slider1,’value’,str2double(v)); function edit1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor')) end function edit3_Callback(hObject, eventdata, handles) v=get(hObject,’string’); set(handles.slider3,’value’,str2double(v)); function edit3_CreateFcn(hObject, eventdata, handles) get(0,'defaultUicontrolBackgroundColor’)) set(hObject,’BackgroundColor’,'white'); end 致谢 本次课设,我遇到了很多问题,首先感谢我的课程设计指导教师老师在这段时间一直给我的支持与鼓励。认真负责的监督我们课程设计的进度,耐心的指 导我们使我们能够按时的完成任务. 同时还要感谢在设计过程中同学们尤其是同组成员给给了我很大的帮助,对我课设过程中不明白的问题给予了即使的、耐心的帮助,让我对此次课设涉及的知识有了更加深刻的把握。他们提出了许多宝贵的建议使我们的设计能得到更好的完善,也加快设计的进程。还有感谢学校为我们提供的良好实验环境以及充足的实验设备,为我们的设计和调试提供了很大的方便.在这段时间学到了很多,虽然由于自身的不足没 有能够为系统提出更好的解决方案.但这对我来说绝对是一个非常宝贵的历练。从中我切身体会到了理论和现实的差距, 只有真正动手去做才能发现问题。 同时,小组成员相互商讨解决方案,发现设计中的不足之处,使错误得到了即使改正,在此衷心地感谢老师以及这几周的殷切指导以及同学们提出诸多宝贵意见真诚地道一声,谢谢! 14- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 数字 电子琴 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文