|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
有关凯塞窗设计带阻滤波器问题请教大神。感谢!" k7 [ i7 T. u% v% ]8 R$ @
# z- @7 h5 D. e4 C3 o
clc;& g$ g* }! P/ \' z
clear;# z2 J+ U2 Z k7 s$ k# K
f1=150;f2=250;f3=350;f4=450;%定义通阻带频率
# o8 T7 e9 I: t7 Jfs=2000;%采样频率
2 L- L0 U! R- F$ M4 QAs=80;
5 U- [) M8 i( p& C0 \! Hws1=2*pi*f1/fs; : P. I1 D( @9 ?
wp1=2*pi*f2/fs;
. v& F/ |6 b; X( C- nwp2=2*pi*f3/fs;
( J& T; L6 L+ ^3 s: P+ v( tws2=2*pi*f4/fs;
( ]& G1 n% T2 Ybeta=0.1102*(As-8.7);: [' P) J! ]( x0 f& X
Bt=min(abs(ws1-wp1),abs(ws1-wp1));/ u$ M9 D; u# H0 y, |$ {0 @7 Z: F
N=ceil((As-7.95)/2.285/Bt);%定义滤波器的阶数
( g+ j' j6 L% _) r4 V; }; tb=fir1(N,[0.5*(f2+f1)/(fs/2),0.5*(f4+f3)/(fs/2)],'stopp',kaiser(N+1,beta)); %输入的参数分别是滤波器的阶数和截止频率
. d1 Q4 E6 a+ e2 ~' W" tfigure(1), w, E2 c4 L( k2 h' X: B
[h,f]=freqz(b,1,512);%幅频特性图3 E' C9 @& k$ k% W) @$ a
plot(f*fs/(2*pi),20*log10(abs(h)))%输入参数为频率与幅值
# p5 s, l, P8 A" u& ~ A7 z# F3 mtitle('滤波器的增益响应');xlabel('频率/赫兹');ylabel('增益/分贝');
7 a5 R& @6 c7 y* B$ ifigure(2)
% b6 @2 _) b- t% `7 esubplot(211)
- L0 Z+ Y. s, q9 c& At=0:1/fs:0.1;%定义时间范围和步长+ _# c* `1 c( C7 r! F* w( @+ M; e
f5=100;f6=200;f7=500;%输入信号频率
/ N; Z, }- [$ ^5 Ls=sin(2*pi*f5*t)+sin(2*pi*f6*t)+sin(2*pi*f7*t);%滤波前信号7 K% }% |+ N& k# F/ k& O
plot(t,s);%滤波前的信号图像$ x& Y8 O6 t/ R+ D& w7 t: u
title('信号滤波前时域图');xlabel('时间/秒');ylabel('幅度/伏');, n& R4 U2 K6 G6 B o
subplot(212)* {& w( }6 i; ]! {
Fs=fft(s,512);%傅里叶变换
+ Q3 F& Z8 j! J9 e2 [6 R3 e2 d$ RAFs=abs(Fs);%信号频域图的幅值
# C/ N* L; L. w F; H% N# qf=(0:255)*fs/512;%频率采样
' } A5 N: g4 z& N2 B: \plot(f,AFs(1:256));%滤波前的信号频域图6 d3 Y, G' \" P: ?, Z7 v: D
title('信号滤波前频域图');xlabel('频率/赫兹');ylabel('幅度');8 G) F4 E [: o
figure(3)
* V& R# B% A; p1 I! Psf=filter(b,1,s);%对信号进行滤波% ^! G8 Y2 ]4 B- K
subplot(211)
- V/ W% T3 Q* |5 \plot(t,sf)%滤波后的信号图像
8 K0 v. i& V6 u0 S/ Mtitle('信号滤波后时域图');xlabel('时间/秒');ylabel('幅度/伏');
b, ~* T/ I0 v5 Yaxis([0 0.1 -2 2]);%限定坐标范围
1 v" G9 X. R7 dsubplot(212)
- X! I) V: l" uFsf=fft(sf,512);%滤波后的信号频域图
& `8 a1 r5 x* u% w7 W7 v- c$ mAFsf=abs(Fsf);%信号频域图的幅值
; _+ u+ A1 i) Kf=(0:255)*fs/512;%频率采样6 f- p$ n( E& Y' }) }9 J
plot(f,AFsf(1:256))%滤波后的信号频域图% k/ U/ \/ k& V. ~ h
title('信号滤波后频域图');xlabel('频率/赫兹');ylabel('幅度');" b. I# J" ]9 |; I1 W& I
为什么MATLAB运行的时候b=fir1(N,[0.5*(f2+f1)/(fs/2),0.5*(f4+f3)/(fs/2)],'stopp',kaiser(N+1,beta));会报错。 |
|