📄 fir_window.m
字号:
%%%用汉宁窗,哈明窗,布莱克曼窗设计低通FIR滤波,性能指标:fs=10KHz,fpass=2KHz,,fstop=2.5KHz,Ap=0.1dB
%%%
close all;
clear;
%参数设定
fs=50;%采样频率
fpass=1.2;fstop=1.21;Ap=0.1;As=80;
%fs=10;fpass=3;fstop=4;Ap=0.001;As=80;
%end
%输入
R=1/fs;
t=0:R:8;
x=2+sin(2*pi*1.8*t)+0.5*sin(2*pi*7*t)+(1*Heaviside(t-2)-1*Heaviside(t-2.1))+(-1*Heaviside(t-3)+1*Heaviside(t-3.2));
%subplot(4,1,3);
plot(t,x);
hold on;
%计算参数L
wp=2*pi*fpass;
ws=2*pi*fstop;
beta_p=(10^(Ap/20)-1)/(10^(Ap/20)+1);
beta_s=10^(-As/20);
L=1+(-20*log10((beta_s*beta_p)^(1/2))-13)/(14.6*(fstop-fpass))*fs/10;%估算阶次
L=ceil(L);
if(mod(L,2)==0)%保证L为奇数
L=L+1;
end
%end
%产生窗
L=85;%可自己设置,也可以计算
window=hamming(L);
%window=hanning(L);
%window=blackman(L);
%subplot(4,1,1);
[h_w,omega_w]=freqz(window,1,512);
%plot(omega_w/(pi),20*(log10(abs(h_w))));
%end
%产生滤波器系数
%fs1=0.5;
f=[0 fpass/(fs/2) fstop/(fs/2) 1];%归一化频率
m=[1 1 0 0];
fn=(fpass+fstop)/2;%截止频率
%b=fir1((L-1),fn/(fs),'low',window);
b=fir2((L-1),f,m,window);
%subplot(4,1,2);
[h,omega]=freqz(b,1,512);
%freqz(b,1,512);
%plot(f*(fs/2),m,omega/pi*(fs/2),abs(h));
%plot(omega/pi,abs(h));
%计算输出
%Y=fftfilt(b,x,256);
Y=filter(b,1,x);
%F=Y*exp(-j*t*w')*R;
%F=real(F);
%t_size1=size(t);
%t_size=t_size1(2);
%y1=zeros(1,t_size);
%for t1=L:t_size
%y1(t1)=fir_go(x,t1,b,L);
%end
%subplot(4,1,4);
plot(t,Y,'red');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -