基于Matlab滤波器及均衡器设计Word下载.docx
《基于Matlab滤波器及均衡器设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于Matlab滤波器及均衡器设计Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
本次设计的滤波器属于一维数字滤波器。
图1信号变换
数字滤波器的优点是利用差分方程可求离散系统的瞬态解,如下图2所示。
图2滤波器优点
FIR滤波器又称为有限脉冲响应滤波器,FIR就来源于名词“有限脉冲响应”的英文单词首字符缩写。
FIR传递函数:
脉冲响应函数:
由于h(k)是一个有限长度的序列,故FIR滤波器称为有限脉冲响应滤波器。
FIR滤波器的滤波公式:
y(k)=h(0)x(k-m/2)+h
(1)x(k-m/2+1)+...+h(m)x(k+m/2)
FIR滤波器系数脉冲响应函数设计方法如下
其中低通、高通、带通及带阻的设计原理如下图所示。
3设计内容
7.3搭建GUI界面
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
利用GUI控件中自带的按钮,根据需要组成如下图3所示的数字信号发生器的Gui界面。
图3用户GUI界面
在本设计中,已经给定了用户函数,该函数不能改变,用户可以根据需要输入不同的信号频率,如图中f1、f2和f3。
在左下侧用户可以根据需要选择“低通”、“高通”、“带通”及“带阻”等四种不同类型的滤波器。
也可以选择不同的滤波方法,如“butter”、“cheby1”、“cheby2”及“ellip”等滤波方法,定义滤波阀值,阶数等参数。
在右上侧是原始信号显示窗口,右下侧是滤波后的信号波形及幅值谱。
7.3编写M文件
使用Matlab自带的滤波器函数,可以很容易的对输入信号进行滤波变换。
Butter滤波方式:
[ba]=butter(order,[str1str2],'
stop'
);
Cheby1滤波方式:
[ba]=cheby1(order,0.5,[str1str2],'
Cheby2滤波方式:
[ba]=cheby2(order,20,[str1str2],'
Ellip滤波方式:
[ba]=ellip(order,0.5,20,[str1str2],'
继续完善其他函数的填写,可以完成数字信号发生器的M文件编写,详细的M文件见附件。
7.3运行结果展示
图4低通滤波器
图5高通滤波器
图6带通滤波器
图7带阻滤波器
4设计心得体会
在进行数字滤波器的设计过程中发现,Matlab的数学处理功能确实非常的强大,可以满足对一般信号处理的要求。
在设计过程中,我也学习到了很多关于信号处理的实践方法,让我对信号处理及信号的本质有了更深一步的认识,这些都是在书本学习中无法理解的。
同时,对信号处理中常见的滤波类型有了清晰的认识,不再停留于课本上简单抽象的定义了。
但是,本次设计仅仅提供了简单的信号发生器中输入的信号,不是现实生活中的信号,带有的理想成分太大,得到的结果也是非常的“理想”,如果输入实际生活中的信号,可能本设计需要增添很多相关处理的内容,如:
最高信号频率的设计,窗函数截断的影响等等。
虽然本设计离实际应用还有一段距离,但是让我对“工程数字信号处理与算法实践”这门课的知识融汇连接在一起,印象深刻。
5均衡器设计背景及目的
在音响器材中,声音均衡器是一种可以分别调节各种频率成分电信号放大量的电子设备,通过对各种不同频率的电信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源及其它特殊作用,一般调音台上的均衡器仅能对高频、中频、低频三段频率电信号分别进行调节。
本次设计利用Matlab搭建的数字声音均衡器来模拟实际中的硬件产品。
本次设计的目的是设计一款声音均衡器,可以对1-10000Hz的频率分为10个调节区间进行衰减或加强,并将原信号和处理后的信号的频域图像选择性地播放出来。
6均衡器设计原理
利用Matlab自带的滤波器函数可以很容易的对声音信号进行不同成分的滤波,如上面设计的低通、高通、带通及带阻滤波器就可以对不同的频段进行滤波。
实际生活中通常将声音信号频段分为以下几类,如表1所示。
表1声音信号分段
声音
类别
超低音
低音
中低音
中音
中高音
高音
超高音
频率段
20Hz-
40Hz
40Hz-
150Hz
150Hz-
500Hz
500Hz-
2KHz
2KHz-
5KHz
7KHz-
8KHz
8KHz-
10KHz
效果
声音强而有力
声音丰满柔和
声音浑厚有力
声音透彻明亮
弦乐的特征音
影响声音层次感的频率
金属感通透率高
根据以上音乐知识,过滤不同的频率段,可以改变本来的音乐。
比如过滤掉音乐文件中的高音文件,声音会变得低沉。
7均衡器设计过程
搭建之后的GUI界面如图8所示。
图8均衡器GUI界面
均衡器的原理就是通过乘以不同的系数来调整不同频带下的幅值,以达到对某些频段加强,对某些频段衰减的作用。
因此,首先必须确定这些系数。
这可以通过与频段数目相等的滚动条来实现,滚动条最小值设定为0,最大值设定为2,默认值为1,即处在不加强也不衰减的情况。
为了强化加强和衰减的效果,采用指数形式的系数,即滚动条位置和系数的关系采用如下形式:
当滚动条位置为0,即x=0时,需要完全衰减掉,这时k=0;
当滚动条位置为1,即x=1时,不加强也不衰减,这时k=1;
当滚动条位置为2,即x=2时,加强100倍,这时k=100;
按照这种设置,可以求出滚动条位置和系数的关系式:
这样就可以通过读取滚动条的位置来构造相应频段的幅值变化系数了,再用一个新的变量,使其等于各个频段幅值乘以一个调整系数后的累加,就得到了频率均衡之后的信号波形。
具体命令如下:
Y=zeros(size(y));
%%初始化处理后的信号
m=10;
%%频段数
fori=1:
m%%按每个频段依次滤波,乘系数操作
ifget(handles.radiobutton1,'
Value'
)==1
[ba]=butter(N,stop(i:
i+1)/Fs);
elseifget(handles.radiobutton2,'
[ba]=cheby1(N,0.5,stop(i:
else
[ba]=cheby2(N,20,stop(i:
end
eval(sprintf('
x=get(handles.slider%d,'
'
i+1));
%%获得滚动条位置,由于界面滚动条从slider2开始,所以读入时用i+1
t=(99^x-1)/98*filter(b,a,y);
%%乘系数
Y=Y+t;
%%累加获得处理后的信号
end
由于用来处理的信号y是从原音频wave中分段截取的,这样得到的处理后信号Y也仅仅是一段的,会随着y的变化不断刷新,不过也可以通过写入文件的方式进行保存。
在处理声音文件时,为了动态显示信号特征,将极大的数组wave进行分段,每段长度设为5000,n为段数。
然后利用变量y,利用循环的方式,每次读取wave数组中一段,并进行后续处理。
n=round(size(wave)/5000)-1;
forni=0:
n-1
y=wave((ni*5000)+1:
((ni+1)*5000));
……
End
这样就能够对原wav文件进行逐段的分析处理,绘制出来的频谱图也就有动态的效果了。
由于本设计是个动态显示过程,不能在文件上直接显示,只给出图片进行展示,详见附件程序及录像。
图9运行结果
8设计心得体会
这次设计基本实现作业要求,跟上次作业相比,本次声音信号具有比较好的动态效果。
并将滤波器的设计应用到了均衡器的设计中,对滤波器的设计及认识更加深刻,对滤波器的用途有了更加清晰的认识,也加深了对信号处理及频谱分析的理解。
9结束语及致谢
经过三次实际操作作业,我对《工程数字信号处理与算法实践》有了系统而清晰的认识,尤其对信号的频谱分析印象深刻,对频谱分析的应用也有了新的理解。
虽然学习时间较短,学到的知识离实际应用还存在相当一段距离,但是我对信号处理的基本步骤已经非常熟悉,对不同的信号处理可以解决不同的实际问题有了深刻的感受,熟练掌握了Matlab的基本编程及GUI用户界面的搭建。
10参考文献
[1]王宏。
MATLAB6.5及其在信号处理中的应用。
清华大学出版社。
2004年10月。