《基于matlab的数字电子琴信号处理系统的设计与实现》由会员分享,可在线阅读,更多相关《基于matlab的数字电子琴信号处理系统的设计与实现(7页珍藏版)》请在金锄头文库上搜索。
1、 工程信号处理大作业 基于基于 Matlab 的信号处理系统的设计与实现的信号处理系统的设计与实现 伍星、柳小勤、刘畅伍星、柳小勤、刘畅 机电工程学院机电工程学院 KUST-HMI 联合实验室联合实验室 2010.03 基于 Matlab 的信号处理系统的设计与实现(2010 版) 目目 录录 1 预备知识预备知识.3 2 项目意义项目意义.3 3 项目简介项目简介.3 4 项目要求项目要求.3 4.1 “数字电子琴”的软件功能.3 4.2 “数字频谱分析仪”的软件功能.4 4.3 “数字均衡器”的软件功能.5 5 编码规范编码规范.6 5.1 每个程序文件(.M文件)开头的HELP部分.6
2、5.2 程序结构和注释 .6 5.3 代码中的变量定义规则 .6 6 项目提交项目提交.7 KUST-HMI 振动、噪声及检测联合实验室 第 2 页基于 Matlab 的信号处理系统的设计与实现(2010 版) 1 预备知识预备知识 机械工程测试技术、工程信号处理、虚拟仪器、MATLAB 等。 2 项目意义项目意义 1) 将掌握 Matlab 软件开发过程的基本理论、基本知识和基本技能,为开展学位论文课题研究打下坚实的基础。 2) 熟悉基于 Matlab 平台的若干信号处理系统开发及调试方法。 3) 培养科研的团队协作精神。 3 项目简介项目简介 在 Matlab 开发平台上开发若干信号处理系
3、统“数字电子琴、数字频谱分析仪、数字均衡器”。 4 项目要求项目要求 设计“数字电子琴、数字频谱分析仪、数字均衡器”三个信号处理系统,具体要求如下: 1) 自由组合分组,每组 4 人;由班长将分组名单发至教师 email。 2) 相关文献资料阅读和综述分析、项目设计方案制订、主要技术难点和技术实现方法。 3) 使用 M 函数设计具有 GUI(图形化用户界面)的三个信号处理系统。 4) 每组提交一份源程序;撰写不少于 10 页的项目研究报告项目报告,提交纸质版和电子版各 1 份。 5) 每组准备课堂汇报 PPT,讲解整个项目的设计、开发、分工等情况。 4.1 “数字电子琴”的软件功能“数字电子琴
4、”的软件功能 1) 数字信号发生器的功能数字信号发生器的功能:能够产生正弦波、方波、三角波等常见的波形的数字信号,并且提供了图形界面用于选择波形、频率、幅值与相位。能够根据用户指定的波形和参数产生相应的数字信号,然后将数字信号写入声卡的缓冲区,最后由声卡播放出相应的声音。 2) 数字电子琴的功能数字电子琴的功能:电子琴的每个音阶均对应一个特定频率的信号,通过调用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能,界面中包含 A、B、O 共 15 个琴键,鼠标按下时即发声,松开时发声停止。 KUST-HMI 振动、噪声及检测联合实验室 第 3 页基于 Matlab 的信号处理系
5、统的设计与实现(2010 版) 3) GUI 界面参考界面如下,不仅限于此类设计风格,各组自行设计。 图图 1 数字电子琴参考界面数字电子琴参考界面 a) 独立的信号合成子程序 (m 文件) : 输入信号参数 (波形类型、 频率、幅值、长度等) ,输出信号的波形;扩展该子程序,输入多个分量的参数,输出混合信号的波形。 b) 信号合成的控制界面:编写 GUI 界面,包含单个信号的参数控件,调用 a)中的子程序, 将单个信号的输出波形显示在界面上; 扩展 GUI界面,添加一个混合信号参数表,可以将上一步中的单信号分量加入该表,也可以删除表中的某个分量。调用 a)中的子程序,由参数表构造混合信号,并
6、显示在主界面上。 c) 信号到声卡的子程序(开始、停止) ;扩展 GUI 界面,为混合信号添加播放按钮。 d) 电子琴的音阶定义界面及实现、音阶参数的保存:建立电子琴的主界面程序,为其添加设置菜单;建立电子琴参数设置 GUI:包含一个音阶列表,选中某个音阶,然后调用 c)中的 GUI 进行参数设置,并将参数返回;最终得到一个所有音阶对应的参数列表文件; (也可以将音阶参数直接写在程序里,这样更简单但不够灵活) e) 电子琴主界面实现,调用音阶参数、信号合成、发声程序;设计电子琴键盘界面,捕捉按键上的鼠标动作;根据按键对应的音阶,从d)中的参数表中读出参数,参照 c),实现声卡输出。 4.2 “
7、数字频谱分析仪”的软件功能“数字频谱分析仪”的软件功能 1) 音频信号输入,从声卡输入、从 WAV 文件输入、从标准信号发生器输入; 2) 各种信号分析方法,包括: KUST-HMI 振动、噪声及检测联合实验室 第 4 页基于 Matlab 的信号处理系统的设计与实现(2010 版) ? 信号时域分析算法:均值、方差、有效值、最大值、最小值、峰峰值等。 ? 信号频域分析算法:幅值谱(含 Log 和 DB) 、功率谱等。 ? 常用窗函数:矩形窗、汉宁窗、海明窗等。 3) 提供 GUI 图形界面用于显示波形与光标读数等。 4) GUI 界面参考界面如下,不仅限于此类设计风格,各组自行设计。 图图
8、2 数字频谱分析仪参考界面数字频谱分析仪参考界面 a) 建立文件输入菜单与信号时间显示窗口, 实现数据读入和波形显示; b) 为时间信号坐标图添加时域统计量,均值、方差等;添加光标功能; c) 建立频谱显示坐标轴;在坐标轴旁添加控制参数:谱图类型、窗函数等,实现这些控件对应的算法;添加光标功能。 d) 可选功能:声卡采集数据, “实时”的信号显示和频谱分析。 4.3 “数字均衡器”的软件功能“数字均衡器”的软件功能 1) WAV 声音信号获取,即从文件(*.wav,*.au 等)读取音频信息; 2) 八段数字均衡器设定; 3) 滤波功能:包括生成低通、高通、带通、带阻的巴特沃斯滤波器,并显示滤
9、波器的频率特征曲线; 4) 保存功能:保存滤波后的音频信息到文件; 5) 播放功能:播放滤后音频信号并实时显示波形及频谱特性。 6) GUI 界面参考界面如下,不仅限于此类设计风格,各组自行设计。 KUST-HMI 振动、噪声及检测联合实验室 第 5 页基于 Matlab 的信号处理系统的设计与实现(2010 版) 图图 3 数字均衡器参考界面数字均衡器参考界面 5 编码规范编码规范 5.1 每个程序文件(每个程序文件(.m 文件)开头的文件)开头的 Help 部分部分 a) 简要描述程序实现的功能; b) 程序名尽量使用完整的英文单词组成; c) 列出程序的调用格式; d) 分别列出输入输出
10、参数的意义,格式(标量、矢量、矩阵)以及其它限制。 5.2 程序结构和注释程序结构和注释 e) 编写每一段代码首先附加注释,说明该段代码实现的功能,程序段之间用空行隔开; f) 程序段中间主要参数和新的函数也加以注释说明; g) 格式: h) 等号两侧加空格,以便于阅读; i) 运算符号两侧适当空格,避免表达式过于拥挤; j) 合理缩进循环 for、 分支 if 等结构中的代码 (右键菜单中的 Smart Indent)。 5.3 代码中的变量定义规则代码中的变量定义规则 k) 尽量保证从变量名称(而不借助于上下文)就能直接看出其表示的意义: l) 通用的缩略词,可以写其符号名称,例如采样频率
11、定义为 fs 等; KUST-HMI 振动、噪声及检测联合实验室 第 6 页基于 Matlab 的信号处理系统的设计与实现(2010 版) m) 常用的缩写例如表示数目的 N 和时间 T,应该尽量与表示的内容合用,避免单独出现,例如表示点的数目用 NPoint; n) 通用的希腊字母符号用其英文发音表示,如 sigma, zeta, omega 等; o) 意义相同的变量在各个程序中使用相同的名称,例如同一组数据在不同 程序中都用 signal 表示; p) 对有意义、较重要的变量,避免使用太短的变量名,尽量使用完整的英文单词,或完整单词的组合。单词间用大写字母或下划线_分开,例如featureSpace; q) 单词组合的变量名中需要使用缩写时,保留原单词的适当长度,便于推测出完整的 单词,例如频率范围 frequency limits 缩写为 freqLimits; r) 意义不明确的变量在第一次出现时后面加注释。 6 项目提交项目提交 项目按要求分阶段进行提交,具体安排如下: 时时 间间 内内 容容 提交各组项目的资料提交各组项目的资料 3 月 1 日至 3 月 26 日 系统实现3 月 26 提交数字电子琴研究报告 ,并汇报工作情况3 月 26 日至 4 月 23 日 系统实现4 月 23 提交数字频