MATLAB实现数字FIR的高通和带通等滤波器的源程序1文档格式.docx
- 文档编号:21869027
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:14
- 大小:101.91KB
MATLAB实现数字FIR的高通和带通等滤波器的源程序1文档格式.docx
《MATLAB实现数字FIR的高通和带通等滤波器的源程序1文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB实现数字FIR的高通和带通等滤波器的源程序1文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
subplot(221)
理想单位脉冲响应hd(n)'
)subplot(222)
stem(n,w_han)
subplot(223)stem(n,h)
实际单位脉冲响应hd(n)'
)subplot(224)
plot(w/pi,db)
axis([0,1,-100,10])
基于切比雪夫一致逼近法设计FIR数字低通滤波器
%给定频率轴分
%给定在这些频率分
%给定在这些频率分点上
%设计出切比雪夫最佳一致
f=[00.60.71];
点
八\、
A=[1100];
点上理想的幅频响应weigh=[110];
的加权b=remez(32,f,A,weigh);
逼近滤波器[h,w]=freqz(b,1,256,1);
h=abs(h);
h=20*log10(h);
subplot(211)stem(b,'
.'
);
grid;
切比雪夫逼近滤波器的抽样值'
)subplot(212)plot(w,h);
title('
滤波器幅频特性(dB)'
利用汉宁窗设计I型数字带阻滤波器
Wpl=0.2*pi;
Wph=0.8*pi;
Wsl=0.4*pi;
Wsh=0.6*pi;
tr_width=min((Wsl-Wpl),(Wph-Wsh));
N=ceil(6.2*pi/tr_width)
As=-round(max(db(Wsl/delta_w+1:
Wsh/delta_w+1)))%实际阻带纹波
subplot(221)stem(n,hd)
)subplot(222)stem(n,w_hann)title('
)subplot(223)stem(n,h)
)subplot(224)plot(w/pi,db)
利用三角窗设计川型数字带通滤波器
Wpl=0.4*pi;
Wph=0.6*pi;
Wsl=0.2*pi;
Wsh=0.8*pi;
tr_width=min((Wpl-Wsl),(Wsh-Wph));
%过渡带宽度
N=ceil(6.1*pi/tr_width)
%滤波器长度
n=0:
Wcl=(Wsl+Wpl)/2;
%理想低通滤波器的截止频率
Wch=(Wsh+Wph)/2;
hd=ideal_bp2(Wcl,Wch,N);
%理想低通滤波器的单位冲激响应
w_tri=(triang(N))'
%三角窗
h=hd.*w_tri;
%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);
%计算实际滤波器的幅度响应delta_w=2*pi/1000;
Ap=-(min(db(Wpl/delta_w+1:
Wph/delta_w+1)))As=-round(max(db(Wsh/delta_w+1:
501)))subplot(221)stem(n,hd)
)subplot(222)stem(n,w_tri)
三角窗w(n)'
)axis([0,1,-100,10])
利用布拉克曼窗设计口型数字带通滤波器
Wph=0.6*pi;
Wsh=0.8*pi;
tr_width=min((Wpl-Wsl),(Wsh-Wph));
渡带宽度
N=ceil(11*pi/tr_width)+1%滤波器长度n=0:
%理想低通滤波器的截止频率Wch=(Wsh+Wph)/2;
hd=ideal_bp1(Wcl,Wch,N);
%理想低通滤波器的单位冲激响应w_bman=(blackman(N))'
%布拉克曼窗h=hd.*w_bman;
%实际通带纹波
%实际阻带纹波
%过
Ap=-(min(db(Wpl/delta_w+1:
501)))纹波
subplot(221)stem(n,hd)title('
)subplot(222)stem(n,w_bman)title('
布拉克曼窗w(n)'
)subplot(224)plot(w/pi,db)title('
%实际阻带
利用海明窗设计口型数字低通滤波器
Wp=0.2*pi;
tr_width=Ws-Wp;
N=ceil(6.6*pi/tr_width)+1n=0:
hd=ideal_lp1(Wc,N);
w_ham=(hamming(N))'
h=hd.*w_ham;
%理想低通滤波器的单位冲激响应%海明窗
%截取得到实际的单位脉冲响应
Ap=-(min(db(1:
Wp/delta_w+1)))%实际通带纹波
As=-round(max(db(Ws/delta_w+1:
501)))%实际阻带纹波
stem(n,w_ham)
海明窗w(n)'
)subplot(223)stem(n,h)title('
%
function[db,mag,pha,w]=freqz_m2(b,a)%滤波器的幅值响应(相对、绝对)、相位响应
%db:
相对幅值响应
%mag:
绝对幅值响应
%pha:
相位响应
%w采样频率;
%b系统函数H(z)的分子项(对FIR,b=h)
%a系统函数H(z)的分母项(对FIR,a=1)
[H,w]=freqz(b,a,1000,'
whole'
H=(H(1:
501))'
w=(w(1:
mag=abs(H);
%绝对幅值响应
db=20*log10((mag+eps)/max(mag));
%相对幅值响应
pha=angle(H);
%相位响应
利用模拟Butterworth滤波器设计数字低通滤波器
%exa4-8_pulseDFforexample4-8
%usingButterworthanaloglowpassfiltertodesigndigitallowpassfilter
%利用模拟Butterworth滤波器设计数字低通滤波器
%脉冲响应不变法
wp=0.2*pi;
ws=0.3*pi;
Rp=1;
As=15;
T=1;
%性能指标
Rip=10(Rp/20);
Atn=10(As/20);
OmgP=wp*T;
OmgS=ws*T;
[N,OmgC]=buttord(OmgP,OmgS,Rp,As,'
s'
%选取模拟滤波器的阶数[cs,ds]=butter(N,OmgC,'
%设计出所需的模拟低通滤波器
[b,a]=impinvar(cs,ds,T);
%使用脉冲响应不变法进
行转换
%求得相对、绝对频响及相位、群迟延响应
[db,mag,pha,grd,w]=freqz_m(b,a);
%下面绘出各条曲线
subplot(2,2,1);
plot(w/pi,mag);
幅频特性'
xlabel('
w(/pi)'
ylabel('
|H(jw)|'
axis([0,1,0,1.1]);
set(gca,'
XTickMode'
'
manual'
XTick'
[00.20.30.51]);
YTickMode'
YTick'
[0AtnRip1]);
grid
subplot(2,2,2);
plot(w/pi,db);
幅频特性(dB)'
dB'
axis([0,1,-40,5]);
set(gca,'
[-40-As-Rp0]);
gridsubplot(2,2,3);
plot(w/pi,pha/pi);
相频特性'
pha(/pi)'
axis([0,1,-1,1]);
subplot(2,2,4);
plot(w/pi,grd);
群延迟'
Sample'
axis([0,1,0,12]);
gridfunction[db,mag,pha,grd,w]=freqz_m(b,a)
%滤波器幅值响应(绝对、相对)、相位响应及群延迟
%Usage:
[db,mag,pha,grd,w]=freqz_m(b,a)%500点对应[0,pi]
%db相对幅值响应;
mag绝对幅值响应;
pha相位响应;
grd群延迟响应%w采样频率;
b系统函数H(z)的分子项(对FIR,b=h)
%a系统函数H(z)的分母项(对FIR,a=1)
[H,w]=freqz(b,a,500);
%500点的复频响应mag=abs(H);
grd=grpdelay(b,a,w);
基于频域抽样法的FIR数字带阻滤波器设计
N=41;
T1=0.598;
alpha=(N-1)/2;
l=0:
wl=(2*pi/N)*l;
Hrs=[ones(1,6),T1,zeros(1,7),T1,ones(1,11),T1,zeros(1,7),T1,ones(1,6)];
%理想振幅采样响应
Hdr=[1,1,0,0,1,1];
wdl=[0,0.3,0.3,0.7,0.7,1];
k1=0:
floor((N-1)/2);
k2=floor((N-1)/2)+1:
angH=[pi/2-alpha*(2*pi)/N*(k1+0.5),-pi/2+alpha*(2*pi)/N*(N-k2-0.5)];
%相位约束条件
%构成Hd(k)
%实际单位冲激响应
%实际振幅响应
Hdk=Hrs.*exp(j*angH);
h1=ifft(Hdk,N);
h=real(h1.*exp(j*pi*n/N));
[db,mag,pha,w]=freqz_m2(h,[1]);
[Hr,ww,a,L]=hr_type3(h);
subplot(221)plot(wl/pi+1/N,Hrs,'
wdl,Hdr)title('
频率样本Hd(k):
N=41'
)axis([01-0.11.2])subplot(222)stem(l,h)title('
实际单位脉冲响应h(n)'
)subplot(223)plot(ww/pi,Hr,wl/pi+1/N,Hrs,'
)title('
实际振幅响应H(w)'
)axis([01-0.11.2])subplot(224)plot(w/pi,db)title('
)axis([01-8010])function[db,mag,pha,w]=freqz_m(b,a);
%滤波器的幅值响应(相对、绝对)、相位响应%db:
绝对幅值响应%pha:
%b系统函数H(z)的分子项(对FIR,b=h)%a系统函数H(z)的分母项(对FIR,a=1)[H,w]=freqz(b,a,1000,'
H=(H(1:
w=(w(1:
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
%pha=unwrap(angle(H));
function[Hr,w,c,L]=hr_type3(h);
%计算所设计的3型滤波器的振幅响应
%Hr=振幅响应
%b=3型滤波器的系数
%L=Hr的阶次
%h=3型滤波器的单位冲击响应
M=length(h);
L=(M-1)/2;
c=[2*h(L+1:
-1:
1)];
n=[0:
L];
w=[0:
500]'
*2*pi/500;
Hr=sin(w*n)*c'
基于频域抽样法的FIR数字带通滤波器设计
wsl=0.12*pi;
%低阻带边缘
wsh=0.82*pi;
%高阻带边缘
wpl=0.32*pi;
%低通带边缘wph=0.62*pi;
%高通带边缘delta=(wpl-wsl);
%过度带
M=ceil(2*pi*3/delta);
%抽样点数
al=(M-1)/2;
wl=(2*pi/M);
%抽样间隔
k=0:
M-1;
T1=0.12;
T2=0.6;
%过渡带样本点
Hrs=[zeros(1,ceil(0.12*pi/wl)+1),T2,T1,ones(1,ceil(0.3*pi/wl)),T1,T2,zeros(1,ceil(0.3734*pi/wl)),T2,T1,ones(1,ceil(0.3*pi/wl)),T1,T2,zeros(1,ceil(0.12*pi/wl)+1)];
wdl=[00.120.320.620.821];
k1=0:
floor((M-1)/2);
k2=floor((M-1)/2)+1:
angH=[-al*(2*pi)/M*k1,al*(2*pi)/M*(M-k2)];
H=Hrs.*exp(j*angH);
h=real(ifft(H));
%傅立叶反变换
figure
(1);
%冲击响应图
stem(k,h);
impulseresponse'
xlabel('
n'
h(n)'
figure
(2);
%幅频曲线图
Hf=abs(H);
w=k*wl/pi;
plot(w,Hf,'
*b-'
axis([01-0.11.1]);
amplituderesponse'
frequencyinpiunits'
Hr(w)'
xtickmode'
xtick'
wdl);
ytickmode'
ytick'
[00.120.61]);
grid;
figure(3);
fs=15000;
[c,f3]=freqz(h,1);
f3=f3/pi*fs/2;
plot(f3,20*log10(abs(c)));
频谱特性'
频率/HZ'
衰减/dB'
t=(0:
100)/fs;
x=sin(2*pi*t*700)+sin(2*pi*t*3200)+sin(2*pi*t*6200);
q=filter(h,1,x);
[a,f1]=freqz(x);
f1=f1/pi*fs/2;
[b,f2]=freqz(q);
f2=f2/pi*fs/2;
figure(4);
subplot(2,1,1);
plot(f1,abs(a));
输入波形频谱图'
频率'
幅度'
subplot(2,1,2);
plot(f2,abs(b));
输出波形频谱图'
基于汉宁窗的FIR数字高通滤波器设计
functions2
Fs=15000;
t=(0:
100)/Fs;
x=sin(2*pi*500*t)+sin(2*pi*3000*t)subplot(245);
stem(x);
原始信号'
axis([0,100,-2,2]);
Ws=7*pi/30;
%过渡带
Wp=13*pi/30;
tr_wid=Wp-Ws;
%理
%理想高通
%布拉克曼
%
%计算实际滤波器的幅度响
%实际阻带纹波,round是取整
宽度N=ceil(11*pi/tr_wid)n=0:
想高通滤波器的截止频率hd=ideal_hp1(Wc,N);
滤波器的单位冲激响应w_bla=(blackman(N))'
h=hd.*w_bla;
截取得到实际的单位脉冲响应[db,mag,pha,grd,w]=freqz_m(h,[1]);
应
As=-round(max(db(1:
Ws/delta_w+1)))函数
y=filter(h,1,x)subplot(246)plot(y)title('
滤波后的信号'
axis([0,100,-1,1])subplot(241)stem(n,hd)title('
)subplot(242)stem(n,w_bla)
布拉克满窗w(n)'
)subplot(243)stem(n,h)
)subplot(244)plot(w/pi,db)
)axis([0,1,-100,10])function[db,mag,pha,grd,w]=freqz_m(b,a);
[H,w]=freqz(b,a,1000,'
mag=abs(H);
pha=angle(H);
grd=grpdelay(b,a,w);
subplot(247);
plot(pha)title('
相频响应'
)functionhd=ideal_hp1(Wc,N)
alp=(N-1)/2;
%eps是一个很
m=n-alp+eps;
小很小的数
hd=[sin(pi*m)-sin(Wc*m)]./(pi*m);
用双线性法设计巴特沃斯高
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 实现 数字 FIR 滤波器 源程序