
基于Matlab的音频信号处理系统.pdf
10页目录第一章基于 Matlab 的信号处理系统概述 ....................... 1第二章音频信号处理系统的各单元设计....................... 1第一节信号的采集与Matlab 读取 ............................. 1第二节 FIR滤波器的设计................................................... 2第三节滤波后信号 ..................................................................... 4第四节将处理过的信号保存为目标文件............... 6第三章课程设计心得体会 ............................................................ 7附录 FDA工具箱的使用..................................................................... 8参考文献....................................................................................................... 91 第一章 基于 Matlab 的信号处理系统概述为了巩固所学的数字信号处理理论知识, 使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解, 特开设了 Matlab 课程设计。
内容如下:要求学生在MATLAB中采集语音信号,并对所采集的语音信号进行时域和频谱分析给定滤波器的性能指标,采用窗函数法设计滤波器滤出高频成分的信号,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化第二章音频信号处理系统的各单元设计第一节信号的采集与Matlab 读取在这里为了简化处理过程,直接采用Windows 系统安装时自带的文件作为音频信号源,下面是信号读取的Matlab 源程序:% 音频信号源的读取clear;clc;%清理命令窗里内容和变量[signal,fs,bits]=wavread('D:\Matlab\r2007a\work\signal\windows xp 1??ú.wav'); % 读信源, signal为音频数据, fs 为采样频率, bits 为量化位数subplot(2,1,1);plot(signal); title(' 原始信号时域波形图' ); % 绘制原始信号时域波形图Signal=fft(signal);%对原始信号进行快速傅立叶变换2 subplot(2,1,2);plot(abs(Signal)); title(' 原始信号频谱图' ); % 绘制原始信号频谱图sound(f,22050);%回放原始语音信号图形如下所示:由频谱图可以看出信号能量集中在低频部分,为了减少无用的高频分量我设计了以下的FIR 滤波器将其滤除。
012345678x 104-1-0.500.51原 始 信 号 时 域 波 形 图012345678x 1040500100015002000原 始 信 号 频 谱 图第二节 FIR滤波器的设计滤波器是信号处理过程中必不可少的环节,为了达到课题的要求,该设计采用窗函数法完成了满足以下指标的低通滤波器通带截频fp=3000Hz ,阻带截频fs=3500Hz ,通带最大衰减0.3dB,阻带最小衰减50dB,采样频率fs 为信号源采样频率22050Hz源程序如下:%Wp=3000*2*pi;Ws=3500*2*pi;Ap=50dB;fs=22050Hz3 Wp=3000*2*pi;Ws=3500*2*pi;Ap=0.3;As=50;fs=22050; wp=Wp/fs;ws=Ws/fs; %归一化通带截频,阻带截频wdelta=ws-wp; % 过渡带宽% 由阻带最小衰减指标确定选用汉明窗,并确定其阶数N=ceil(6.6*pi/wdelta) Nw=N;n=0:N-1; m=n-alpha+eps; % 理想滤波器脉冲响应wc=(wp+ws)/2; %理想截频hd=sin(wc*m)./(pi*m); % 采用汉明窗设计win=hamming(Nw); h=hd.*win'; b=h; [H,f]=freqz(b,1,512,fs); % 绘制滤波器的幅频响应图plot(f,20*log10(abs(H))) xlabel(' 频率 ' );ylabel(' 幅度 ' ); title(‘滤波器幅频特性’);grid on; 幅频特性曲线如下所示:4 020004000600080001000012000-120-100-80-60-40-20020频 率幅度滤 波 器 幅 频 特 性第三节滤波后信号源程序如下:[signal,fs,bits]=wavread('D:\Matlab\r2007a\work\signal\windows xp 1??ú.wav'); % 信号读取sound(signal,fs);y=fftfilt(b,signal); % 滤波输出figure(2)subplot(2,1,1), plot(x),title(' 输入信号 ' ) % 绘制输入信号subplot(2,1,2),plot(y) % 绘制输出信号xlabel(' 时间 /s'),title(' 输出信号 ' )sound(y,fs);%输入输出频谱Signal=fft(signal);Y=fft(y);5 figure(3);subplot(2,1,1);plot(abs(Signal));xlabel(' 频率 ' );ylabel(' 幅度 ' );title(' 输入信号频谱' );grid on ;subplot(2,1,2);plot(abs(Y));xlabel(' 频率 ' );ylabel(' 幅度 ' );title(' 输出信号频谱' );grid on ;时域图如下:012345678x 104-1-0.500.51输 入 信 号012345678x 104-1-0.500.51时 间 /s输 出 信 号频谱图如下:6 012345678x 1040500100015002000频 率幅度输 入 信 号 频 谱012345678x 1040500100015002000频 率幅度输 出 信 号 频 谱对比输入输出频谱图可以发现,经过低通滤波器以后高频成分被很好的滤除掉了。
第四节将处理过的信号保存为目标文件信号处理只是一个过程,为了达到我们最终的目标,我们必须将经过处理的信号保存起来,这是信号处理的最后一个步骤,为此下面这个程序必不可少源程序如下:% 保存处理后的文件为result.wav wavwrite(y,fs,bits,’d:\matlab\r2007a\work\result.wav’); sound(y,fs); 7 第三章 课程设计心得体会在学习这门课程时, 普遍感到数字信号处理的概念抽象, 对其中的分析方法与基本理论不能很好地理解与掌握实践证明 , 采用 Matlab 进行数字信号处理课程设计, 使我们加深了对课堂抽象概念的理解, 巩固了课堂上所学的理论知识 , 并能很好地理解与掌握数字信号处理中的基本概念、基本原理、基本分析方法 在课程设计中 , 通过自己录制自己的声音,设计滤波器对声音进行各种处理, 大大激发了同学们的学习兴趣, 使我们很快地掌握编程方法和解决实际问题的技巧, 取得了良好的教学效果,以此同时学习巩固所学的知识 , 加强理论和实际结合的能力, 培养学生的综合设计能力与实际工作能力8 附录 FDA工具箱的使用启动 fdatool:方法 1:在 matlab 命令窗里输入命令fdatool;方法2:单击matlab 主窗口左下角start—— toolboxes—— filter design——filter design&analysis tool (fdatool) 。
fdatool 界面如下:9 各个窗口分别是1:当前滤波器信息,2:滤波器特征,3:响应类型,设计方法, 4:滤波器阶数,5:频率特性,6:幅度特性利用 fdatool可以很容易的设计出想要的滤波器,方法是指定滤波器的各个参数和响应类型,在这我就不多说了Fdatool设计出来的滤波器可以保存为 .mdl 文件,以供simulink仿真的调用参考文献1、 陈怀琛数字信号处理教程——MATLAB释义与实现北京电子工业 出版社2008,1 2、 陈后金数字信号处理北京高等教育出版社 2004.7 。












