📄 filter_p300k_s600k_iir_butter.m
字号:
%通带频率300k,阻带频率600k,通带衰减1dB,通带衰减1dB
%采样频率Fs=3M,若改变Fs就可以改变通带频率和阻带频率
%采样点书数N=1024
%用butterword逼近
%产生采样信号
f1=100000;f2=200000;f3=800000;f4=900000;%两个在带内,两个在带外
Fs=3000000;Num=1024;%采样点数,最好取2^n,否则会产生其他分量
n=(0:Num-1);
x1=cos(2*pi*f1*n/Fs);%采样了30个周期
x2=cos(2*pi*f2*n/Fs);%采样了60个周期
x3=cos(2*pi*f3*n/Fs);%采样了200个周期
x4=cos(2*pi*f4*n/Fs);%采样了300个周期
x=x1+x2+x3+x4;
%分析原信号的频谱
X=fft(x);
F_max=(Num/2-1)*Fs/Num;%最高频率
f_pos=linspace(0,F_max,Num/2);%只分析正频率分量
X_pos=X(1:Num/2);%正频率分量
subplot(3,1,1);stem(f_pos,abs(X_pos));%必须用abs()不然会有负数产生
%设计滤波器
Wp=0.2;Ws=0.4;%pi略掉
Rp=1;Rs=80;
[N,Wn]=buttord(Wp,Ws,Rp,Rs);
[p,d]=butter(N,Wn)%IIR滤波器的系数
[h,omega]=freqz(p,d,256);%H(e(jw))采样
subplot(3,1,2);
plot(omega/pi,20*log10(abs(h)));%画出FIR系统响应H(e(jw))
%信号通过设计的滤波器
y=filter(p,d,x);
%分析滤波后的信号频谱
Y=fft(y);
Y_pos=Y(1:Num/2);%正频率分量
subplot(3,1,3);stem(f_pos,abs(Y_pos));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -