函数一:[H,w]=freqz(B,A,N)MATLAB提供了专门用于求离散系统频响特性的函数freqz(),调用freqz()的格式有以下两种:l[H,w]=freqz(B,A,N)B和A分别为离散系统的系统函数分子、分母多项式的系数向量,N为正整数,返回量H则包含了离散系统频响在0——pi范围内N个频率等分点的值,向量w则包含范围内N个频率等分点。调用中若N默认,默认值为512。l[H,w]=freqz(B,A,N,’whole’)该调用格式将计算离散系统在0—pi范内的N个频率等分店的频率响应的值。因此,可以先调用freqz()函数计算系统的频率响应,然后利用abs()和angle()函数及plot()函数,即可绘制出系统在或范围内的频响曲线。绘制如下系统的频响曲线H(z)=(z-0.5)/zMATLAB命令如下:B=[1-0.5];A=[10];[H,w]=freqz(B,A,400,'whole');Hf=abs(H);Hx=angle(H);clffigure(1)plot(w,Hf)title('离散系统幅频特性曲线')figure(2)plot(w,Hx)title('离散系统相频特性曲线')函数二[b,a]=butter(n,Wn,/ftype/):butter函数的用法为:[b,a]=butter(n,Wn,/ftype/)其中n代表滤波器阶数,Wn代表滤波器的截止频率,这两个参数可使用buttord函数来确定。buttord函数可在给定滤波器性能的情况下,求出巴特沃斯滤波器的最小阶数n,同时给出对应的截止频率Wn。buttord函数的用法为:[n,Wn]=buttord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。当其值为1时代表采样频率的一半。Rp和Rs分别是通带和阻带区的波纹系数。不同类型(高通、低通、带通和带阻)滤波器对应的Wp和Ws值遵循以下规则:1.高通滤波器:Wp和Ws为一元矢量且WpWs;2.低通滤波器:Wp和Ws为一元矢量且WpWs;3.带通滤波器:Wp和Ws为二元矢量且WpWs,如Wp=[0.2,0.7],Ws=[0.1,0.8];4.带阻滤波器:Wp和Ws为二元矢量且WpWs,如Wp=[0.1,0.8],Ws=[0.2,0.7]。函数三firl函数的使用:在MATLAB下设计标准响应FIR滤波器可使用firl函数。firl函数以经典方法实现加窗线性相位FIR滤波器设计,它可以设计出标准的低通、带通、高通和带阻滤波器。firl函数的用法为:b=firl(n,Wn,/ftype/,Window)各个参数的含义如下:b—滤波器系数。对于一个n阶的FIR滤波器,其n+1个滤波器系数可表示为:b(z)=b(1)+b(2)z-1+…+b(n+1)z-n。n—滤波器阶数。Wn—截止频率,0≤Wn≤1,Wn=1对应于采样频率的一半。当设计带通和带阻滤波器时,Wn=[W1W2],W1≤ω≤W2。ftype—当指定ftype时,可设计高通和带阻滤波器。Ftype=high时,设计高通FIR滤波器;ftype=stop时设计带阻FIR滤波器。低通和带通FIR滤波器无需输入ftype参数。Window—窗函数。窗函数的长度应等于FIR滤波器系数个数,即阶数n+1。函数4窗函数的使用:在MATLAB下,这些窗函数分别为:1.矩形窗:w=boxcar(n),产生一个n点的矩形窗函数。2.三角窗:w=triang(n),产生一个n点的三角窗函数。当n为奇数时,三角窗系数为w(k)=当n为偶数时,三角窗系数为w(k)=3.巴特利特窗:w=Bartlett(n),产生一个n点的巴特利特窗函数。巴特利特窗系数为w(k)=巴特利特窗与三角窗非常相似。巴特利特窗在取样点1和n上总以零结束,而三角窗在这些点上并不为零。实际上,当n为奇数时bartlett(n)的中心n-2个点等效于triang(n-2)。4.汉明窗:w=hamming(n),产生一个n点的汉明窗函数。汉明窗系数为w(k+1)=0.54-0.46cos()k=0,…,n-15.汉宁窗:w=hanning(n),产生一个n点的汉宁窗函数。汉宁窗系数为w(k)=0.5[1-cos()]k=1,…,n6.布莱克曼窗:w=Blackman(n),产生一个n点的布莱克曼窗函数。布莱克曼窗系数为w(k)=0.42-0.5cos(2π)+0.8cos(4π)]k=1,…,n与等长度的汉明窗和汉宁窗相比,布莱克曼窗的主瓣稍宽,旁瓣稍低。7.凯泽窗:w=Kaiser(n,beta),产生一个n点的凯泽窗数,其中beta为影响窗函数旁瓣的β参数,其最小的旁瓣抑制α与β的关系为:0.1102(α-0.87)α50β=0.5842(α-21)0.4+0.07886(α-21)21≤α≤500α21增加β可使主瓣变宽,旁瓣的幅度降低。8.契比雪夫窗:w=chebwin(n,r)产生一个n点的契比雪夫窗函数。其傅里叶变换后的旁瓣波纹低于主瓣r个db数。Matlab中关于FIR滤波器设计的命令收藏一、产生窗函数的文件有八个:1.bartlett(三角窗);——两端为零2.blackman(布莱克曼窗);3.boxcar(矩形窗);4.hamming(哈明窗);5.hanning(汉宁窗);6.triang(三角窗);——两端不为零7.chebwin(切比雪夫窗);8.kaiser(凯赛窗);二、fir1.m用“窗函数法”设计FIRDF。调用格式:(1)b=fir1(N,Wn);(2)b=fir1(N,Wn,‘high’);(3)b=fir1(N,Wn,‘stop’);N:阶次,滤波器长度为N+1;Wn:通带截止频率,其值在0~1之间,1对应Fs/2;b:滤波器系数。格式(1):若Wn为标量,则设计低通滤波器,若Wn是1×2的向量,则用来设计带通滤波器,若Wn是1×L的向量,则可用来设计L带滤波器。这时,格式(1)要改为:b=fir1(N,Wn,'DC-1'),或b=fir1(N,Wn,'DC-0')。前者保证第一个带为通带,后者保证第一个带为阻带。格式(2):用来设计高通滤波器。格式(3):用来设计带阻滤波器。在上述所有格式中,若不指定窗函数的类型,fir1自动选择Hamming窗。三、fir2.m本文件采用“窗函数法”设计具有任意幅频相应的FIR数字滤波器。其调用格式是:b=fir1(N,F,M);F是频率向量,其值在0~1之间,M是和F相对应的所希望的幅频相应。如同fir1,缺省时自动选用Hamming窗。例:设计一多带滤波器,要求频率在0.2~0.3,0.6~0.8之间为1,其余处为零。四、remez.m设计Chebyshev最佳一致逼近FIR滤波器、Hilbert变换器和差分器。其调用格式是:(1)b=remez(N,F,A);(2)b=remez(N,F,A,W);(3)b=remez(N,F,A,W,‘Hilbert’);(4)b=remez(N,F,A,W,‘'differentiator')N是给定的滤波器的阶次,b是设计的滤波器的系数,其长度为N+1;F是频率向量,A是对应F的各频段上的理想幅频响应,W是各频段上的加权向量。F、A及W的指定方式和例8.4.1和8.4.2所讨论过的一样,唯一的差别是F的范围为0~1,而非0~0.5,1对应抽样频率的一半。需要指出的是,若b的长度为偶数,设计高通和带阻滤波器时有可能出现错误,因此,最好保证b的长度为奇数,也即N应为偶数。五、remezord.m本文件用来确定在用Chebyshev最佳一致逼近设计FIR滤波器时所需要的滤波器阶次。其调用格式是:[N,Fo,Ao,W]=remezord(F,A,DEV,Fs)。F、A的含意同文件remez,DEV是通带和阻带上的偏差;输出的是适合要求的滤波器阶次N、频率向量Fo、幅度向量Ao和加权向量W。若设计者事先不能确定要设计的滤波器的阶次,那么,调用remezord后,就可利用这一族参数调用remez,即b=remez(N,Fo,Ao,W),从而设计出所需要滤波器。因此,remez和remezord常结合起来使用。需要说明的是,remezord给出的阶次N有可能偏低,这时适当增加N即可;另外,最好判断一下,若N为奇数,就令其加一,使其变为偶数,这样b的长度为奇数。例:fedge=[8001000];%表示频率向量,用于低通滤波器的通带截止和阻带起始mval=[10];%对应fedge各频率向量上的理想幅频响应dev=[0.05590.01];%通带和阻带上的偏差fs=4000;%抽样频率[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs);%由remezord求得滤波器的阶次N、频率向量fpts、幅度向量mag和加权向量wtb=remez(N,fpts,mag,wt);[h,w]=freqz(b,1,256);plot(w*2000/pi,20*log10(abs(h)));grid;xlabel('频率/Hz')ylabel('幅度/dB')六、其他1、firls.m用最小平方法设计线性相位FIR滤波器,可设计任意给定的理想幅频响应;2、fircls.m用带约束的最小平方法设计线性相位FIR滤波器,可设计任意给定的理想幅频响应;3、fircls1.m用带约束的最小平方方法设计线性相位FIR低通和高通滤波器。4、sgolay.m用来设计Savitzky-GolayFIR平滑滤波器,其原理见9.1.1节5、firrcos.m用来设计低通线性相位FIR滤波器,其过渡带为余弦函数形状。一、在MATLAB中的窗函数,十分简单:(1)矩形窗(RectangleWindow)调用格式:w=boxcar(n),根据长度n产生一个矩形窗w。(2)三角窗(TriangularWindow)调用格式:w=triang(n),根据长度n产生一个三角窗w。(3)汉宁窗(HanningWindow)调用格式:w=hanning(n),根据长度n产生一个汉宁窗w。(4)海明窗(HammingWindow)调用格式:w=hamming(n),根据长度n产生一个海明窗w。(5)布拉克曼窗(BlackmanWindow)调用格式:w=blackman(n),根据长度n产生一个布拉克曼窗w。(6)恺撒窗(KaiserWindow)调用格式:w=kaiser(n,beta),根据长度n和影响窗函数旁瓣的β参数产生一个恺撒窗w。二、基于窗函数的FIR滤波器设计利用MATLAB提供的函数fir1来实现调用格式:fir1(n,Wn,’ftype’,Window),n为阶数、Wn是截止频率(如果输入是形如[W1W2]的矢量时,本函数将设计带通滤波器,其通带为W1ω[例]设计一个长度为8的线性相位FIR滤波器。其理想幅频特性满足用矩形窗:Window=boxcar(8);b=fir1(7,0.4,Window);freqz(b,1)用blackman窗:Window=blackman(8);b=fir1(7,0.4,Window);freqz(b,1)[例]设计线性相位带通滤波器,其长度N=15,上下边带截止频率分别为W1=0.3π,w2=0.5πWindow=blackman(16);b=fir1(15,[0.30.5],Window);freqz(b,1)linspace是用来生成一个等差数列的lin是linear的缩写x=linspace(a,b,n)就是将生成一个以a和b为断点共划分为n个区间的向量,比如linspace(1,10,5)ans=1.00003.25005.50007.750010.0000AWGN:在某一信号中加入高斯白噪声y=awgn(x,SNR)在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。y=awgn(x,SNR,SIGPO