-
2021-04-18 10:54:25
《滤波器matlab分析》由会员分享,可在线阅读,更多相关《滤波器matlab分析(5页珍藏版)》请在人人文库网上搜索。
1、作业二基于Matlab的滤波器特性分析与比较热自101 蒋俊 一、简述滤波器的原理、分类及应用。答: 原理:滤波器是一种选频装置,可以使信号中特定的频率成分通过,而极大地衰减其它频率成分。在测试装置中,利用滤波器的这种选频作用,可以滤除干扰噪声或进行频谱分析。 广义地讲,任何一种信息传输的通道(媒质)都可视为是一种滤波器。 因为,任何装置的响应特性都是激励频率的函数,都可用频域函数描述其传输特性。因此,构成测试系统的任何一个环节,诸如机械 系统、电气网络、仪器仪表甚至连接导线等等,都将在一定频率范围内,按其频域特性,对所通过的信号进行变换与处理。分类:根据选频作用可类:低通滤波器、高通滤波器、。
2、带通滤波器、带阻滤波器。根据“最佳逼近特性”标准分类:巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器。应用:电源滤波:得到平缓的直流电源或滤除交流电源的高次谐 波信号滤波:一般用于滤除干扰信号,保留有用信息。低通滤波器:一般用于滤除高频干扰。高通滤波器:一般用于滤除低频干扰或交流耦合。带通滤波器:一般用于通过限定带宽的有效信号。带阻滤波器:一般用于滤除特定频率的干扰信号。全通滤波器:一般用于相位校正。二、1、一阶无源RC低通滤波器设滤波器的输入电压为ex,输出电压为ey,电路的微分方程 ,这是一个典型的一阶系统。令=RC=0.004,称为时间常数,对上式取拉氏变换,有H(s)=11+s 或H(f。
3、)=11+2f , 其幅频、相频特性公式为:,。可以利用H=freqs(b,a,w)语句进行画图。Matlab代码如下。w=linspace(0,1200,5000);b=1;a=0.004 1;H=freqs(b,a,w);subplot(2,1,1);plot(w,abs(H);grid;xlabel(omega);ylabel(|H(jomega|);subplot(2,1,2);plot(w,angle(H);grid;xlabel(omega);ylabel(phi(omega);图1分析如下:由上图可知当频率很低的时候,信号几乎不受衰减;随着频率的增大,信号在不断衰减;当频率接近于。
4、无穷大时,信号会被阻挡。低通滤波器就是以此原理形成。2、一阶有源RC低通滤波器一个一阶有源低通滤波器如图所示,由一级RC低通滤波器电路再加上一个电压跟随器组成。其传递函数可以表示为:式中n1RC。其中令n=0.0005Matlab语句同上,得图如下:图2分析如下:由上图可知当频率很低的时候,信号几乎不受衰减;随着频率的增大,信号在不断衰减;当频率接近于无穷大时,信号会被阻挡。其中因为有源一阶滤波器有集成运放,集成运放的开环电压增益和输入阻抗均很高,输出电阻小,构成有源滤波电路后还具有一定的电压放大和缓冲作用。但集成运放带宽有限,所以目前的有源滤波电路的工作频率难以做得很高。3、二阶无源低通滤波。
5、器传递函数为:其中:w0=1RC ,设RC=0.0005Matlab代码如下:w=linspace(0,5000,5000);b=1;a=0. 0.0015 1;H=freqs(b,a,w);subplot(2,1,1);plot(w,abs(H);grid;xlabel(omega);ylabel(|H(jomega|);subplot(2,1,2);plot(w,angle(H);grid;xlabel(omega);ylabel(phi(omega)图34、二阶有源低通滤波器传输函数: 其中:w0=1RC ,设RC=0.0005 。Matlab代码如下:w=linspace(0,5000。
6、,5000);b=1;a=0. 0.001 1;H=freqs(b,a,w);subplot(2,1,1);plot(w,abs(H);grid;xlabel(omega);ylabel(|H(jomega|);subplot(2,1,2);plot(w,angle(H);grid;xlabel(omega);ylabel(phi(omega)图4总结:1、由图1、2、3、4分析可知低通滤波器当频率很低的时候,信号几乎不受衰减;随着频率的增大,信号在不断衰减;当频率接近于无穷大时,信号会被阻挡。2、由图1、2比较可得,一阶无源低通滤波器曲线下降稍快些,因为有源一阶滤波器有集成运放,集成运放的开环电压增益和输入阻抗均很高,输出电阻小,构成有源滤波电路后还具有一定的电压放大和缓冲作用。但集成运放带宽有限,所以目前的有源滤波电路的工作频率难以做得很高。3、由图3、4比较可得,二阶无源低通滤波器曲线下降稍快些。
更多相关内容 -
MATLAB数字滤波器的设计
2022-02-17 12:09:03一、数字滤波器设计数字滤波器就是由数字乘法器、加法器和延时单位组成的一种装置。它的作用是对输入离散信号的数字代码进行运算处理,从而达到改变信号频谱的目的。数字滤波器可以用计算机软件实现或者大规模集成...一、数字滤波器设计
数字滤波器就是由数字乘法器、加法器和延时单位组成的一种装置。它的作用是对输入离散信号的数字代码进行运算处理,从而达到改变信号频谱的目的。数字滤波器可以用计算机软件实现或者大规模集成数字硬件实时实现。在数字滤波器处理模拟信号的时候,先要对输入的模拟信号进行限带、抽样和模数转换。数字滤波器输入信号的抽样率要大于信号带宽的两倍,它的频率响应还要具有以抽样频率为间隔的周期重复特性,并且它还要以1/2抽样频率点呈镜像对称。数字滤波器具有高精度、高可靠性、可控制改变特性、便于集成等优点。现在数字滤波器的使用范围比较广,例如,在语言信号处理、图像信号处理、医学生物信号处理以及其他应用领域。
数字滤波器有低通、高通、带通、带阻和全通等类型。函数butter可用于设计Butterworth滤波器,butter函数可以设计低通、高通、带通和带阻的数字和模拟滤波器,用butter函数设计的滤波器通带内的幅度响应最大限度的平滑,但损失了截止频率处的下降斜度。
函数chebyl可用于设计Chebyshev I型滤波器,chebyl函数可以设计低通、高通、带通和带阻的数字和模拟Chebyshev I型滤波器,用chebyl函数设计的Chebyshev I型滤波器的通带内为等波纹,它的阻带内为单调。Chebyshev I型滤波器的下降斜度比Chebyshev II型的要大,但是Chebyshev II的代价是通带内波纹比较大。
除了典型设计以外,MATLAB信号处理工具箱提供了几个直接设计IIR数字滤波器的函数,直接调用就可以设计滤波器,这为设计通用滤波器提供了方便。
在MATLAB中设计IIR滤波器时要设计出巴特沃斯滤波器可以使用Butterworth函数,要设计契比雪夫I型滤波器时可以使用Cheby1函数,设计契比雪夫II型滤波器要使用Cheby2,而椭圆滤波器则需要ellipord函数。下面主要介绍的是前两个函数的使用情况。
IIR滤波器在设计上与FIR滤波器的不同点在于前者在设计时的阶数不是由设计者指定的,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),由软件设计出满足这些参数的最低滤波器阶数。在MATLAB下设计不同类型IIR滤波器的时候都会有与之对应的函数用于阶数的选择。
IIR单位响应与FIR单位响应也是有区别的,前者为无线脉冲序列而后者为有限的。幅频特性精度方面,IIR幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上;而FIR的幅频特性精度较之于IIR低,但是线性相位,就是不同频率分量的信号经过FIR滤波器后他们的时间差不变。这是很好的性质。
设计Chebyshev II型滤波器用函数cheby2。可以设计低通、高通、带通和带阻的数字和模拟Chebyshev II型滤波器,其通带内为单调,阻带内等波纹。Chebyshev II型滤波器的下降斜度比I型小,但其阻带内波纹较大。
函数ellip则可以用来设计椭圆形滤波器,和chebyl, cheby2差不多,也是可以设计出低通、高通、带通和带阻的数字和模拟滤波器这么几种,但是和Butterworth和chebyshev滤波器比较而言,ellip函数可以得到下降斜度更大的滤波器,得通带和阻带均为等波纹。一般来说,椭圆滤波器能以最低的阶实现指定的性能指标。
各类滤波器都有自己的特点。在使用中,都需要按照一定的使用要求,应当注意以下几点:
(1)要得到符合要求性质的滤波器的最小阶数N以及数字Butterworth滤波器的固有频率Wn(即3dB )可以使用阶数和固有频率的选择:[N,Wn]=buttord(Wp,Ws,Rp,Rs)。设计的要求是在通带内的衰减不超过Rp,在阻带内的衰减不小于Rs,通带和阻带有截止频率分别是Wp, Ws,它们是归一化的频率,范围是[0, 1],对应π弧度。
(2)设计一个N阶的低通Butterworth滤波器使用函数[B,A]=butter(N, Wn),返回滤波器系数矩阵[B,A]。其中固有频率Wn必须是归一化频率。它的最大值是采样频率的一半。Fs缺省时默认为2Hz。如果Wn=[Wl,W2]是一个两元素的向量,则函数将设计出一个2N阶的带通滤波器,通带为[W1,W2]。
(3)信号处理工具箱中经常使用的频率是Nyquist频率,它被定义为采样频率的一半,在滤波器的阶数选择和设计中的截止频率均使用Nyquist频率进行归一化处理。例如对于一个采样频率为1000 Hz的系统,400Hz的归一化即为400/500=0.8。归一化频率的范围在[0, 1]之间。如果要将归一化频率转换为角频率,则将归一化频率乘以π;如果要将归一化频率转换为Hz,则将归一化频率乘以采样频率的一半。这就是所谓的滤波器设计当中的频率归一化问题
一般在设计Chebyshev I型和Chebyshev II型数字低通滤波器时,会要求通带边界频率fp=2.1kHZ,通带最大衰减Rp=0.5dB;阻带边界频率fs=8kHZ,阻带最小衰减Rs=30dB,采样频率为Fs=20kHZ。
Chebyshev I型的M程序如下:
Fs=20000; %抽样频率20KHz Flp=2100; Fls=8000; Wp=2*Flp/Fs; %归一化的通带截止频率 Ws=2*Fls/Fs; %归一化的阻带截止频率 Rp=0.5; %通带最大衰减(单位:dB) Rs=30; %阻带最小衰减(单位:dB) [N,Wn]=cheb1ord(Wp,Ws,Rp,Rs); %返回最小阶数和截止频率 [b,a]=cheby1(N,Rp,Wn); %返回H(z)的分子分母系数 [hw,w]=freqz(b,a); subplot(2,1,1); plot(w/pi,20*log10(abs(hw)));grid on; xlabel('ω/π');ylabel('幅度(dB)') title('切比雪夫I型幅频响应'); subplot(2,1,2);plot(w/pi,abs(hw)); grid on; xlabel('ω/π');ylabel('幅度(H)');
运行以上程序,得到的波形如图1所示,
图1 切比雪夫Ι型幅频响应
运行结果:
N=2 b= 0.1007 0.2014 0.1007 a= 1.0000 -0.9872 0.4140 Chebyshev II型M程序如下: Fs=20000; %抽样频率20KHz Flp=2100; Fls=8000; Wp=2*Flp/Fs; %归一化的通带截止频率 Ws=2*Fls/Fs; %归一化的阻带截止频率 Rp=0.5; %通带最大衰减(单位:dB) Rs=30; %阻带最小衰减(单位:dB) [N,Wn]=cheb2ord(Wp,Ws,Rp,Rs); %返回最小阶数和截止频率 [b,a]=cheby2(N,Rs,Wn); %返回H(z)的分子分母系数 [hw,w]=freqz(b,a); subplot(2,1,1); plot(w/pi,20*log10(abs(hw)));grid on; xlabel('ω/π');ylabel('幅度(dB)') title('切比雪夫II型幅频响应'); subplot(2,1,2);plot(w/pi,abs(hw)); grid on; xlabel('ω/π');ylabel('幅度(H)');
运行以上程序,得到的波形如图2所示,
图1 切比雪夫Ⅱ型幅频响应
运行结果:
N=2 b= 0.2357 0.4241 0.2357 a= 1.0000 -0.2996 0.1950
三、 结果分析
从频率响应图中可以看出:巴特沃斯滤波器具有单调下降的幅频特性,通带内平滑;切比雪I型滤波器的幅频特性在通带内有波动,阻带内单调;chebyshev II型滤波器的幅频特性在阻带内有波动,通带内单调;椭圆滤波器的选择性相对前三种是最好的,下降斜度比较大,通带和阻带内均为等波纹,同样的性能指标,椭圆滤波器可以最低的阶数来实现。这样就可以根据不同的要求选用不同类型的滤波器。
结论
MATLAB是以复数矩阵作为基本编程单元的一种程序设计语言,它提供了各种矩阵的运算与操作,并有较强的绘图及其它强大的功能,成为当今国际控制界应用最广,也是最受人们喜爱的一种软件环境。MATLAB是一个高度的集成系统,随着它的版本不断更新,软件功能也不断扩充与完善,在科学和工程计算中将会有更广阔的应用前景。
用MATLAB语言编制了稳态和动态仿真程序,说明MATLAB语言非常适合数字滤波领域内的仿真及研究,在某些问题的研究中MATLAB及SIMULINK能带来极大的方便并使效率极大提高。参考文献
[1] 韩利竹,王华.MATLAB电子仿真与应用.北京:国防工业出版社,2003.
[2] 董长虹.MATLAB信号处理与应用. 北京:国防工业出版社,2005.
[3] 赵树杰.数字信号处理.西安:西安电子科技大学出版社,1997.
[4] 陈怀琛.MATLAB及在电子信息课程中的应用.北京:电子工业出版社出版,2002.
-
利用MATLAB辅助设计IIR数字带通滤波器.pdf
2021-10-31 09:54:03利用MATLAB辅助设计IIR数字带通滤波器.pdf -
利用MATLAB实现FIR数字滤波器设计.pdf
2021-07-10 13:27:49利用MATLAB实现FIR数字滤波器设计.pdf -
利用Matlab设计滤波器(FDAT) .
2021-04-22 00:45:37在matlab中有一个滤波器设计和分析工具FDAT,可以通过此工具来对滤波器进行设计。matlab中一些简单的命令:round(x)把x舍入到最近的整数(四舍五入)abs(x)计算x的绝对值sqrt(x)计算x的平方值fix(x)把x沿0的方向舍入到...在matlab中有一个滤波器设计和分析工具FDAT,可以通过此工具来对滤波器进行设计。
matlab中一些简单的命令:round(x)把x舍入到最近的整数(四舍五入)
abs(x)计算x的绝对值
sqrt(x)计算x的平方值
fix(x)把x沿0的方向舍入到最近的整数值
floor(x)把x舍入到比x小的最近的整数
ceil(x)把x舍入为比x大的最近的整数
要设计滤波器,首先要做的就是要知道各个系数。其实系数我们是可以通过matlab的FDAT工具来进行计算的。步骤如下:
(1)先打开matlab,然后点击左下脚的start按钮,选择Toolboxes——>Filter Design ——>Filter Design &Analysis Tool,即可启动FDATool。也可在matlab中执行fdatool来启动FDATool。FDATool启动后如下图所示的窗口。
(2)按照要求自己设计滤波器。启动FDATool后的界面就是滤波器的设计界面,如上图所示,要从其它的界面进入滤波器的设计界面可以倒垃圾FDATool窗口坐下侧的一列工具按钮中的最下一个图标filter design ,即可进入设计界面。在该界面中要进行滤波器的设计。首先要选择滤波器的类型,滤波器的类型有高通、低通、带通和带阻,以及其它的好几种。选择好类型之后就要选择设计方法,设计方法从大类上有两种,一种是FIR,另一种是IIR。每一大类中又有很多种不同的方法。针对不同的设计方法,后面有不同的选项。然后就是滤波器的阶数(filter order),如果是11阶的滤波器则输入10就可以了。设置完这些就需要设置滤波器的频率特性和幅度特性了。其中Fs是采样频率,Fp是通带截止频率,Fs是阻带截止频率。后面的Apass是指通带内允许的最大衰减,Astop是指阻带内允许的最小衰减。设置完这些参数之后,按Design Filter就可以按要求设计出该滤波器了。
在本次举例中设置如下图:
(3)滤波器设计和性能分析
设计完成后需要对滤波器进行性能分析,检查是不是符合要求。性能分析可通过单击Analysis菜单,下面有很多子菜单来进行。
1、Magnitude Response(幅频响应)图略
2、Phase Response(相频响应)
3、相幅联合分析
4、冲击响应(Analysis——>Impulse Response后可得到如下的图形)
5、滤波器的系数(这个是很重要的,也是我们想要的)
Analysis——>Filter Coefficients之后会看到系数的。(图略)
还有其他的分析,都省略了吧!
(4)设置量化参数
matlab在计算系数时只是追求高精度而没有考虑有限字长。我们在fpga中实现时字长是有限的,所以要对系数首先进行量化。点击左下脚的Set Quantization parameter就可以设置量化参数了。
默认时Turn quantization on是没有选中的,只有选中之后才可以设置后面的各个项。选中Convert coefficients to 就可以设置系数的格式了。因为我们要在fpga要实现,所以在此次选择定点数(fixed),如果选择定点数则就需要选择舍入模式,其中有round、fix、floor、ceil等各个的意义见开头提到的几个函数。也可在matlab中用help来查看各个命令的作用哦!(看看matlab是不是很人性啊!)后面是选择溢出模式和定点数的数据格式的。Format中有两个数字,前面一个呢是字的总长度,后面一个呢是小数的长度。如果你对某些选项还不太明白,那就找到这个选项对应的命令,然后help一下就可以了。
设置完成后在Filter Coefficient窗口最下面还可以看到对应的命令呢!这是不是很令人兴奋啊!如下图:
量化之后,依然可以用前面说过的几种分析方法来对比量化前后的不同。
(5)导出系数
点击File——>export,出现如下对话框。可以将系数导出到workspace空间中,以变量Num的形式存在。
但是变量Num都是小于1的数,所以还是不能用fpga来进行处理,所以要把它进行扩大。那到底要扩大多少倍呢,通过看资料我的理解就是在fpga处理中你的系数是几位数就可以扩大多少倍。比如你的系数准备是9位数,那么你可以给Num乘以2的9次方。
又查了一些资料才发现,系数的量化实际可以直接通过下面的命令来实现:
coeff=round(Num*2^9),(或者也可以coeff=round(Num/max(abs(Num))*32767))这样得到的系数也是可以用的。如果要检查你得到的系数是否可用,可以通过在matlab输入这条指令:freqz(coeff,1,512)。输入这个指令以后会出现下图:
通过观察这个图就可以知道这个系数是不是正确了。
得到系数之后在fpga中如何实现呢,这篇写的太长了,下篇继续吧
-
利用MATLAB实现基于双线性变换法的IIR数字滤波器设计.pdf
2021-07-10 13:27:11利用MATLAB实现基于双线性变换法的IIR数字滤波器设计.pdf -
基于Matlab的FIR滤波器的优化设计方法
2020-10-21 23:30:441FIR滤波器优化设计法Matlab信号工具箱中提供的Remez函数可对数字滤波器进行优化设计,得到的数字滤波器具有等波纹特性,Remez函数实现ParksMcClel-lan算法,即采用数字分析中的Remez算法和切比雪夫最佳一致逼近理论... -
[转载]matlab 滤波器(转)
2021-04-18 16:46:46三,滤波器设计:1、相关原理:设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应...三,滤波器设计:
1、相关原理:
设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。
数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应(IIR)数字滤波器和有限长单位冲激响应(FIR)数字滤波器。
数字滤波器频率响应的三个参数:
(1) 幅度平方响应:
(2) 相位响应
(3) 群时延响应
IIR数字滤波器:
IIR数字滤波器的系统函数为 的有理分数,即
IIR数字滤波器的逼近问题就是求解滤波器的系数
和,使得在规定的物理意义上逼近所要求的特性的问题。如果是在s平面上逼近,就得到模拟滤波器,如果是在z平面上逼近,则得到数字滤波器。
FIR数字滤波器:
设FIR的单位脉冲响应h(n)为实数,长度为N,则其z变换和频率响应分别为
按频域采样定理FIR数字滤波器的传输函数H(z)和单位脉冲响应h(n)可由它的N个频域采样值H(k)唯一确定。
MATLAB中提供了几个函数,分别用于实现IIR滤波器和FIR滤波器。
(1)卷积函数conv
卷积函数conv的调用格式为 c=conv(a,b)
该格式可以计算两向量a和b的卷积,可以直接用于对有限长信号采用FIR滤波器的滤波。
(2)函数filter
函数filter的调用格式为 y=filter(b,a,x)
该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。
(3)函数fftfilt
函数fftfilt的调用格式为 y=fftfilt(b,x)
该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。
关于用butter函数求系统函数分子与分母系数的几种形式。
[b,a]=butter(N,wc,'high'):设计N阶高通滤波器,wc为它的3dB边缘频率,以 为单位,故 。
[b,a]=butter(N,wc):当wc为具有两个元素的矢量wc=[w1,w2]时,它设计2N阶带通滤波器,3dB通带为,w的单位为
。
[b,a]=butter(N,wc,'stop'):若wc=[w1,w2],则它设计2N阶带阻滤波器,3dB通带为
,w的单位为。
如果在这个函数输入变元的最后,加一个变元“s”,表示设计的是模拟滤波器。这里不作讨论。
为了设计任意的选项巴特沃斯滤波器,必须知道阶数N和3dB边缘频率矢量wc。这可以直接利用信号处理工具箱中的buttord函数来计算。如果已知滤波器指标,
, 和 ,则调用格式为
[N,wc]=buttord(wp,ws,Rp,As)
对于不同类型的滤波器,参数wp和ws有一些限制:对于低通滤波器,wpws;对于带通滤波器,wp和ws分别为具有两个元素的矢量,wp=[wp1,wp2]和ws=[ws1,ws2],并且
ws1
2、设计内容:
(1)滤波器示例:
在这里为了说明如何用MATLAB来实现滤波,特举出一个简单的函数信号滤波实例(对信号x(n)=sin( n/4)+5cos(
n/2)进行滤波,信号长度为500点),从中了解滤波的实现过程。程序如下:
Wn=0.2*pi;
N=5;
[b,a]=butter(N,Wn/pi);
n=0:499;
x=sin(pi*n/4)+5*cos(pi*n/2);
X=fft(x,4096);
subplot(221);plot(x);title('滤波前信号的波形');
subplot(222);plot(X);title('滤波前信号的频谱');
y=filter(b,a,x);
Y=fft(y,4096);
subplot(223);plot(y);title('滤波后信号的波形');
subplot(224);plot(Y);title('滤波后信号的频谱');
在这里,是采用了butter命令,设计出一个巴特沃斯低通滤波器,从频谱图中可以很明显的看出来。下面,也就是本课题的主要内容,也都是运用到了butter函数,以便容易的得到系统函数的分子与分母系数,最终以此来实现信号的滤波。
(2)N阶高通滤波器的设计(在这里,以5阶为例,其中wc为其3dB边缘频率,以 为单位),程序设计如下:
x=wavread('ding.wav');
sound(x);
N=5;wc=0.3;
[b,a]=butter(N,wc,'high');
X=fft(x);
subplot(321);plot(x);title('滤波前信号的波形');
subplot(322);plot(X);title('滤波前信号的频谱');
y=filter(b,a,x);
Y=fft(y);
subplot(323);plot(y);title('IIR滤波后信号的波形');
subplot(324);plot(Y);title('IIR滤波后信号的频谱');
z=fftfilt(b,x);
Z=fft(z);
subplot(325);plot(z);title('FIR滤波后信号的波形');
subplot(326);plot(Z);title('FIR滤波后信号的频谱');
(3)N阶低通滤波器的设计(在这里,同样以5阶为例,其中wc为其3dB边缘频率,以 为单位),程序设计如下:
x=wavread('ding.wav');
sound(x);
N=5;wc=0.3;
[b,a]=butter(N,wc);
X=fft(x);
subplot(321);plot(x);title('滤波前信号的波形');
subplot(322);plot(X);title('滤波前信号的频谱');
y=filter(b,a,x);
Y=fft(y);
subplot(323);plot(y);title('IIR滤波后信号的波形');
subplot(324);plot(Y);title('IIR滤波后信号的频谱');
z=fftfilt(b,x);
Z=fft(z);
subplot(325);plot(z);title('FIR滤波后信号的波形');
subplot(326);plot(Z);title('FIR滤波后信号的频谱');
(4)2N阶带通滤波器的设计(在这里,以10阶为例,其中wc为其3dB边缘频率,以 为单位,wc=[w1,w2],w1 wc
w2),程序设计如下:
x=wavread('ding.wav');
sound(x);
N=5;wc=[0.3,0.6];
[b,a]=butter(N,wc);
X=fft(x);
subplot(321);plot(x);title('滤波前信号的波形');
subplot(322);plot(X);title('滤波前信号的频谱');
y=filter(b,a,x);
Y=fft(y);
subplot(323);plot(y);title('IIR滤波后信号的波形');
subplot(324);plot(Y);title('IIR滤波后信号的频谱');
z=fftfilt(b,x);
Z=fft(z);
subplot(325);plot(z);title('FIR滤波后信号的波形');
subplot(326);plot(Z);title('FIR滤波后信号的频谱');
(5)2N阶带阻滤波器的设计(在这里,以10阶为例,其中wc为其3dB边缘频率,以 为单位,wc=[w1,w2],w1 wc
w2),程序设计如下:
x=wavread('ding.wav');
sound(x);
N=5;wc=[0.2,0.7];
[b,a]=butter(N,wc,'stop');
X=fft(x);
subplot(321);plot(x);title('滤波前信号的波形');
subplot(322);plot(X);title('滤波前信号的频谱');
y=filter(b,a,x);
Y=fft(y);
subplot(323);plot(y);title('IIR滤波后信号的波形');
subplot(324);plot(Y);title('IIR滤波后信号的频谱');
z=fftfilt(b,x);
Z=fft(z);
subplot(325);plot(z);title('FIR滤波后信号的波形');
subplot(326);plot(Z);title('FIR滤波后信号的频谱');
(6)小结:以上几种滤波,我们都可以从信号滤波前后的波形图以及频谱图上看出变化。当然,也可以用sound()函数来播放滤波后的语音,从听觉上直接感受语音信号的变化,但由于人耳听力的限制,有些情况下我们是很难听出异同的。
同样,通过函数的调用,也可以将信号的频谱进行“分离观察”,如显出信号的幅值或相位。下面,通过改变系统函数的分子与分母系数比,来观察信号滤波前后的幅值与相位。并且使结果更加明显,使人耳得以很容易的辨听。
x=wavread('ding.wav');
sound(x);
b=100;a=5;
y=filter(b,a,x);
X=fft(x,4096);
subplot(221);plot(x);title('滤波前信号的波形');
subplot(222);plot(abs(X));title('滤波前信号的幅值');
Y=fft(y,4096);
subplot(223);plot(y);title('滤波后信号的波形');
subplot(224);plot(abs(Y));title('滤波后信号的幅值');
>> sound(y);
可以听到声音明显变得高亢了。从上面的波形与幅值(即幅频)图,也可看出,滤波后的幅值变成了滤波前的20倍。
>> figure,
subplot(211);plot(angle(X));title('滤波前信号相位');
subplot(212);plot(angle(Y));title('滤波后信号相位');
得图:
可以看到相位谱没什么变化。
(四)、界面设计:
直接用M文件编写GUI程序很繁琐,而使用GUIDE设计工具可以大大提高工作效率。GUIDE相当于一个控制面板,从中可以调用各种设计工具以辅助完成界面设计任务,例如控件的创建和布局、控件属性的编辑和菜单设计等。
使用GUIDE设计GUI程序的一般步骤如下:
1. 将所需控件从控件面板拖拽到GUIDE的设计区域;
2. 利用工具条中的工具(或相应的菜单和现场菜单),快速完成界面布局;
3. 设置控件的属性。尤其是tag属性,它是控件在程序内部的唯一标识;
4. 如果需要,打开菜单编辑器为界面添加菜单或现场菜单;
5. 保存设计。GUIDE默认把GUI程序保存为两个同名文件:一个是.fig文件,用来保存窗体布局和所有控件的界面信息;一个是.m文件,该文件的初始内容是GUIDE自动产生的程序框架,其中包括了各个控件回调函数的定义。该M文件与一般的M文件没有本质区别,但是鉴于它的特殊性,MATALAB把这类文件统称为GUI-M文件。保存完后GUI-M文件自动在编辑调试器中打开以供编辑。
6. 为每个回调函数添加代码以实现GUI程序的具体功能。这一步与一般函数文件的编辑调试过程相同。
设计过程及内容:
在MATLAB版面上,通过键入GUIDE弹出一个菜单栏进入gui制作界面(或者在File到new来进入gui),从而开始应用界面的制作。
该界面主要实现了以下几个功能:
①打开wav格式的音频文件,并将该音频信号的值读取并赋予某一向量;
②播放音频文件,可以选择性的显示该音频信号的波形、频谱、幅值以及相位;
③对音频信号进行IIR与FIR的5阶固定滤波处理,可以选择性的显示滤波前后信号的波形、频谱、幅值以及相位,以及播放滤波后的声音。
界面如图所示:
通过该界面,可以方便用户进行语音信号的处理。
界面主程序见附件。
(五)、校验:
1、本设计圆满的完成了对语音信号的读取与打开,与课题的要求十分相符;
2、本设计也较好的完成了对语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图;
3、在滤波这一块,课题主要是从巴特沃斯滤波器入手来设计滤波器,也从一方面基本实现了滤波;
4、初略的完成了界面的设计,但也存在相当的不足,只是很勉强的达到了打开语音文件、显示已定滤波前后的波形等图。
四、 结论:
语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,课题更多的还是体现了数字信号处理技术。
从课题的中心来看,课题是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音的处理。作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。
-
基于Matlab的滤波器分析界面设计
2021-04-18 10:53:26基于Matlab的滤波器分析界面设计作者:陈亮郝卫东乔建华来源:《现代电子技术》2009年第10期摘要:Matlab的GUIDE是专门用于图形用户界面(GUI)程序设计的快速开发环境。在此结合具体的软件图形界面设计实例,介绍... -
利用Matlab设计滤波器(FDAT)
2016-08-26 23:15:48转自:... 在matlab中有一个滤波器设计和分析工具FDAT,可以通过此工具来对滤波器进行设计。 matlab中一些简单的命令:round(x)把x舍入到最近的整数(四舍五入) abs(x)计算x的绝对值 -
基于MATLAB仿真软件对有源滤波器进行分析研究
2021-04-18 10:53:22引言以往在煤矿电网谐波治理方面,通常是并接无源滤波器组,对电网进行固定式补偿。由于提升机为短时循环工作制的负载,一个提升机循环分为加速、等速、减速和休止几个工作状态,各阶段所需功率均不同,另外,许多... -
利用Matlab与Multisim设计数字均衡滤波器方法研究.pdf
2021-07-10 14:49:23利用Matlab与Multisim设计数字均衡滤波器方法研究.pdf -
谈谈MATLAB数字滤波器频域响应
2020-03-13 18:35:13BB: 这几天在做脑电数据的处理工作,遇到很多滤波器上的障碍,...频域响应包括其幅度响应和相位响应,可以利用freqz()函数求解。该函数不带返回值时可直接绘制频响特性,接下来我将谈谈该函数带返回值时如何得到一致... -
matlab 滤波器
2021-04-18 17:35:17三,滤波器设计:1、相关原理:设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应... -
数字信号处理matlab设计滤波器
2022-03-03 18:04:55目录 ...2.4 IIR滤波器原理4 2.5 FIR滤波器的原理4 2.6 窗函数原理5 3设计的步骤和过程7 3.1 IIR设计步骤及过程7 3.2 FIR设计步骤及过程9 4设计程序的调试和运行结果10 4.1采样定理的验证10... -
利用MATLAB实现匹配滤波器的仿真验证
2021-04-18 08:50:13实验目的:利用matlab验证匹配滤波器的特性二.实验要求:设二进制数字基带信号s(t)=∑ang(t-nTs),加性高斯白噪声的功率谱密度为0。其中an∈{+1,-1},g(t)=100 其他(1)若接收滤波器的冲激响应函数h(t)=g(t),画出经过... -
利用MATLAB设计IIR数字滤波器.pdf
2021-10-31 22:27:27利用MATLAB设计IIR数字滤波器.pdf -
Matlab滤波器设计与滤波器特性分析(sptool、filterdesigner)
2020-12-22 16:01:46滤波器设计与滤波器特性分析3.1 实验目的3.2 实验原理3.3 实验内容3.3.1 IIR滤波器设计3.3.2 FIR滤波器设计3.3.3 滤波器特性分析3.3.4 滤波器的实际运用实验总结: 3.1 实验目的 1、 掌握 Matlab 下滤波器设计工具... -
单片机与DSP中的matlab滤波器设计-IIR滤波器的设计与仿真
2020-11-19 02:14:05利用MATLAB信号处理箱(Signal Processing Toolbox)可以快速有效地实现数字滤波器的设计与仿真。 2 数字滤波器及传统设计方法 数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表... -
[转载]利用MATLAB实现匹配滤波器的仿真验证
2021-04-18 08:50:15实验目的:利用matlab验证匹配滤波器的特性二.实验要求:设二进制数字基带信号s(t)=∑ang(t-nTs),加性高斯白噪声的功率谱密度为0。其中an∈{+1,-1},g(t)=100 其他(1)若接收滤波器的冲激响应函数h(t)=g(t),画出经过... -
单片机与DSP中的基于MATLAB在IIR滤波器的设计与仿真
2020-11-25 23:23:19利用MATLAB信号处理箱(Signal Processing Toolbox)可以快速有效地实现数字滤波器的设计与仿真。 2 数字滤波器及传统设计方法 数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为... -
基于matlab的iir滤波器的语音信号去噪_fir滤波器matlab实现
2020-12-15 12:54:22摘 要 滤波器设计在数字信号处理中占有极其重要的地位本次课程设计主要是 录制一段语音信号对其进行加噪处理然后利用 IIR 低通滤波器对加有随机噪声 的语音信号进行滤波处理及时频谱分析画出滤波之后的频谱图与时域... -
巴特沃斯数字高通滤波器设计的matlab实现.pdf
2021-07-10 10:31:39巴特沃斯数字高通滤波器设计的matlab实现.pdf -
利用Matlab Simulink对有源电力滤波器(APF)在稳态和暂态过程中对非线性负载产生的谐波和无功功率进行了...
2022-06-07 18:38:05利用Matlab Simulink对有源电力滤波器(APF)在稳态和暂态过程中对非线性负载产生的谐波和无功功率进行了补偿和分析 -
Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)
2020-03-25 19:58:30Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码) FIR滤波器的优缺点 优点:相位线性度好,处理速度快,没有反馈回路稳定性强于IIR。 缺点:FIR幅频特性精度较之于IIR低 IIR滤波器 优点:相同阶数下IIR滤波效果... -
用MATLAB设计FIR滤波器的方法解析
2021-04-18 14:10:21介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法、FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的性能。1 前言数字滤波器... -
用matlab设计的IIR和FIR数字滤波器对信号进行滤波降噪处理,matlab源码+word论文
2022-05-24 08:33:52用matlab设计的IIR和FIR数字滤波器对信号进行滤波降噪处理,matlab源码+word...本文利用matlab的强大计算功能和信号数据处理功能,本文用matlab设计的数字滤波器对信号进行滤波降噪处理,并对实验方法的改进展开了讨论。 -
MatlabFFT频谱分析及FIR数字滤波器-滤波器.rar
2019-08-13 01:24:25MatlabFFT频谱分析及FIR数字滤波器-滤波器.rar 最近在做关于滤波器方面的课题,搜集了一些资料,为了不浪费大家的M币,我将... 利用MATLAB和窗函数法设计FIR数字滤波器.pdf 6. 用MATLAB辅助设计FIR数字滤波器.pdf -
基于MATLAB的FIR滤波器的设计与仿真
2018-07-25 22:29:31了解有限长单位冲激响应FIR数字滤波器的传统设计方法,...利用MATLAB编程设计一个10阶的低通FIR数字滤波器,通带截止频率4KHZ,阻带起始频率6KHZ,采样频率40KHZ的数字低通滤波器,带外衰减不低于-60dB。通带衰减1dB。