MATLAB滤波器函数Matlab信号处理工具箱函数和IIR、FIR函数波形产生和绘图chirp 产生扫描频率余弦diric 产生Dirichlet函数或周期Sinc函数gauspuls 产生高斯调制正弦脉冲pulstran 产生脉冲串rectpuls 产生非周期矩形信号sawtooth 产生锯齿波或三角波sinc 产生sinc函数square 产生方波strips 产生条图tripuls 产生非周期三角波滤波器分析和实现abs 绝对值(幅值)angle 相位角conv 卷积和多项式乘法conv2 二维卷积fftfilt 基于FFT重叠加法的数据滤波filter 递归(IIR)或非递归(FIR)滤波器的数据滤波firter2 二维数字滤波filtfilt 零相位数字滤波filtic 函数filter初始条件确定freqs 模拟滤波器频率响应freqspace 频率响应的频率空间设置freqz 数字滤波器频率响应grpdelay 群延迟impz 数字滤波器的脉冲响应latcfilt 格型梯形滤波器实现unwrap 相位角展开zplane 零极点图IIR与FIRMATLAB下设计IIR滤波器可使用Butterworth函数设计出巴特沃斯滤波器,使用Cheby1函数设计出契比雪夫I型滤波器,使用Cheby2设计出契比雪夫II型滤波器,使用ellipord函数设计出椭圆滤波器。
下面主要介绍前两个函数的使用。
与FIR滤波器的设计不同,IIR滤波器设计时的阶数不是由设计者指定,而是根据设计者输入的各个滤波器参数(截止频率、通带滤纹、阻带衰减等),由软件设计出满足这些参数的最低滤波器阶数。
在MATLAB下设计不同类型IIR滤波器均有与之对应的函数用于阶数的选择。
一、巴特沃斯IIR滤波器的设计在MATLAB下,设计巴特沃斯IIR滤波器可使用butter函数。
Butter函数可设计低通、高通、带通和带阻的数字和模拟IIR滤波器,其特性为使通带内的幅度响应最大限度地平坦,但同时损失截止频率处的下降斜度。
在期望通带平滑的情况下,可使用butter函数。
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为一元矢量且Wp>Ws;2.低通滤波器:Wp和Ws为一元矢量且Wp<Ws;3.带通滤波器:Wp和Ws为二元矢量且Wp<Ws,如Wp=[0.2,0.7],Ws=[0.1,0.8]; 4.带阻滤波器:Wp和Ws为二元矢量且Wp>Ws,如Wp=[0.1,0.8],Ws=[0.2,0.7]。
二、切比雪夫I型IIR滤波器的设计在期望通带下降斜率大的场合,应使用椭圆滤波器或契比雪夫滤波器。
在MATLAB 下可使用cheby1函数设计出契比雪夫I型IIR滤波器。
cheby1函数可设计低通、高通、带通和带阻契比雪夫I型滤IIR波器,其通带内为等波纹,阻带内为单调。
契比雪夫I型的下降斜度比II型大,但其代价是通带内波纹较大。
cheby1函数的用法为:[b,a]=cheby1(n,Rp,Wn,/ftype/)在使用cheby1函数设计IIR滤波器之前,可使用cheblord函数求出滤波器阶数n和截止频率Wn。
cheblord函数可在给定滤波器性能的情况下,选择契比雪夫I 型滤波器的最小阶和截止频率Wn。
cheblord函数的用法为:[n,Wn]=cheblord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。
当其值为1时代表采样频率的一半。
Rp和Rs分别是通带和阻带区的波纹系数。
[B,A] = BUTTER(N,Wn) designs an Nth order lowpass digital Butterworth filter and returns the filter coefficients in length N+1 vectors B (numerator) and A (denominator).The cutoff frequency Wn must be 0.0 < Wn < 1.0, with 1.0 corresponding to half the sample rate.If Wn is a two-element vector, Wn = [W1 W2], BUTTER returns an order 2N bandpass filter with passband W1 < W < W2.[B,A] = BUTTER(N,Wn,'high') designs a highpass filter.[B,A] = BUTTER(N,Wn,'low') designs a lowpass filter.[B,A] = BUTTER(N,Wn,'stop') is a bandstop filter if Wn = [W1 W2]. 当设计低通和高通时,Wn是一个值,表示截止频率;当设计带通和带阻时,Wn 是一个二个元素的数组,表示通带或阻带的上下截止频率。
频率的归一化是对fs/2进行归一。
例如,fs=10000,则fs/2=5000,500归一化为0.1,1000归一化为0.2。
一个论坛上的例子:/forum/thread-72656-1-1.html fs=100;%采样频率为100Hzfc=30;%截止频率为30Hz[b,a]=butter(4,0.6,'high');[h,w]=freqz(b,a);plot(w/pi*fs/2,abs(h)); grid;title('Amplitude Response');xlabel('Frequency (Hz)'); ylabel('Amplitude');figure;x=randn(1,fs*6);y=filter(b,a,x);subplot 211; plot(x); title('Original Signal');subplot 212; plot(y); title('Output of High-pass filter');其中信号是用随机数产生的,长6s。
笫1张图是高通滤波器的幅值响应曲线,笫2张图是信号滤波前后的波形.1. buttord(1)[N,wc]=buttord(wp,ws,αp,αs)用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc。
调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:0≤wp≤1,0≤ws≤1。
1表示数字频率pi。
αp,αs分别为通带最大衰减和组带最小衰减(dB)。
当ws≤wp时,为高通滤波器;当wp和ws为二元矢量时,为带通或带阻滤波器,这时wc也是二元向量。
N,wc作为butter函数的调用参数。
(2)[N,Ωc]=buttord(Ωp,Ωs,αp,αs,‘s’)用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率Ωc。
Ωp,Ωs,Ωc均为实际模拟角频率。
说明:buttord函数使用阻带指标计算3dB截止频率,这样阻带会刚好满足要求,而通带会有富余。
2.buttap(N)[z0,p0,k0]=buttap(N)用于计算N阶巴特沃斯归一化(3dB截止频率Ωc=1)模拟低通原型滤波器系统函数的零、极点和增益因子。
说明:如果要从零、极点模型得到系统函数的分子、分母多项式系数向量ba、aa,可调用[B,A]=zp2tf(z0,p0,k0)3.butter(1)[b,a]=butter(N,wc,‘ftype’)计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。
调用参数N和wc分别为巴特沃斯数字滤波器的阶数和3dB截止频率的归一化值(关于pi归一化),一般是调用buttord(1)格式计算N和wc。
系数b、a是按照z-1的升幂排列。
(2)[B,A]=butter(N,Ωc,‘ftype’,‘s’)计算巴特沃斯模拟滤波器系统函数的分子、分母多项式系数向量ba、aa。
调用参数N和Ωc分别为巴特沃斯模拟滤波器的阶数和3dB截止频率(实际角频率),可调用buttord(2)格式计算N和Ωc。
系数B、A按s的正降幂排列。
tfype为滤波器的类型:◇ftype=high时,高通;Ωc只有1个值。
◇ftype=stop时,带阻阻;此时Ωc=[Ωcl,Ωcu],分别为带阻滤波器的通带3dB 下截止频率和上截止频率。
◇ ftype缺省时:若Ωc只有1个值,则默认为低通;若Ωc有2个值,则默认为带通;其通带频率区间Ωcl < Ω < Ωcu。
注意:所设计的带通和带阻滤波器系统函数是2N阶。
因为带通滤波器相当于N阶低通滤波器与N阶高通滤波器级联。