基于MATLAB的数字电子琴设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*****************
实践教学
*******************
题目:基于MATLAB的数字电子琴设计
专业班级:
姓名:
学号:
指导教师:
成绩:
摘要
本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计。数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃)信号的具体实现方法。其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴。
关键词:MATLAB;数字信号发生器;简易电子琴
目录
前言 (1)
一、数字信号发生器 (2)
1.1图形用户界面的简介 (2)
1.2设计流程 (2)
1.3波形实现的基本原理 (3)
二、电子琴的实现 (5)
2.1简易数字电子琴的简介 (5)
2.2实现原理 (5)
三、基于MATLAB的仿真及结果分析 (6)
3.1 GUI界面 (6)
3.2编写M文件 (7)
总结 (14)
参考文献 (14)
附录 (15)
致谢 (22)
前言
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正弦波的实现
正弦信号的数学表达式如下:
)2sin()sin(ϕπϕ+=+=ft A wt A y (1.1)
其中:A 为幅值;f 为频率;φ为相位。在MATLAB 中,由于处理对象均是离
散的数字信号,将时间变量离散化并构造成一个一维数组用0.1:/1:0s f t = 其中:fs 为采样频率。但s f 的值不能太大,否则波形显示会很慢。相应的正
弦波信号的数字信号表达式为
)2sin()(ϕπ+∆=∆t fn A t n y (1.2)
幅值、频率、相位参数可以由用户界面上的滑动条或编辑框输入。在分别得到t 与
y 的离散值后,用plot 作图函数即可获得相应波形显示。
1.3.2方波信号的实现
方波信号的数学表达式为
),(duty t square y = (1.3)
该式可直接生成一个周期为2π,峰值为1±,占空比为duty 的方波信号,duty 的
默认值为50%。在MATLAB 中可得到幅值、频率、相位可调的方波信号函数
)2(ϕπ+=ft Asquare y (1.4)
1.3.3三角波信号的实现
在MATLAB 中,可以用函数sawtooth 直接生成一个三角波信号,
该函数可生成一个周期为2π,峰值为1±,最大值出现在2width π⨯位置的三角
波。利用该函数,可得到幅值、频率、相位可调的三角波信号函数
)2(ϕπ+=ft Asawtooth y (1.5)