找回密码
 注册
关于网站域名变更的通知
查看: 466|回复: 1
打印 上一主题 下一主题

为什么MATLAB运行的时候b=fir1(N,[0.5*(f2+f1)/(fs/2),0.5*(f4+f3)/(fs/2)],'stopp...

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-8-5 15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
有关凯塞窗设计带阻滤波器问题请教大神。感谢!7 k3 o0 [% G! W! E; G! Z2 ]3 S

. m( k0 \( o) |clc;0 h1 S7 E/ x  |* k+ D
clear;" u, A: f# }+ s* q# A
f1=150;f2=250;f3=350;f4=450;%定义通阻带频率
* a7 f) C$ v2 \$ Nfs=2000;%采样频率. g! d" I1 Q8 c  ?& t( r7 ?  z
As=80;0 Q1 \. w" e2 R8 ~3 K
ws1=2*pi*f1/fs;  
4 y% f5 |6 K0 d. k( j6 P0 Mwp1=2*pi*f2/fs;) P( J3 D7 _6 @% L
wp2=2*pi*f3/fs;  1 q2 ]  |1 _% y
ws2=2*pi*f4/fs;
! w" T" l9 s  q& G0 ebeta=0.1102*(As-8.7);, o$ X' [6 E+ T0 s0 Q6 I
Bt=min(abs(ws1-wp1),abs(ws1-wp1));! U7 Z0 Z% I6 ]- |/ ~9 n
N=ceil((As-7.95)/2.285/Bt);%定义滤波器的阶数
' L1 _6 L9 T) V4 I% j2 O) nb=fir1(N,[0.5*(f2+f1)/(fs/2),0.5*(f4+f3)/(fs/2)],'stopp',kaiser(N+1,beta)); %输入的参数分别是滤波器的阶数和截止频率
- C1 E$ C* p. `4 |# B% G1 }figure(1)
$ q) d  Q3 F) O[h,f]=freqz(b,1,512);%幅频特性图
- d  Z2 r: V3 C, i0 P4 s# f/ Pplot(f*fs/(2*pi),20*log10(abs(h)))%输入参数为频率与幅值
8 X& Y$ E) Y& Z' e4 i( y4 L/ l" s. `title('滤波器的增益响应');xlabel('频率/赫兹');ylabel('增益/分贝');  z6 x5 i) H# N% x4 p
figure(2)6 _, h- t. `! f* o
subplot(211)
& ?6 M% d# Y0 A% E! I3 O9 e2 c' ht=0:1/fs:0.1;%定义时间范围和步长8 ^4 G+ @& _7 U) g7 _
f5=100;f6=200;f7=500;%输入信号频率1 s4 R* O. l0 i) c* h0 A. V; z
s=sin(2*pi*f5*t)+sin(2*pi*f6*t)+sin(2*pi*f7*t);%滤波前信号; l- i& b9 K2 t) @
plot(t,s);%滤波前的信号图像
. G  X" a  J  N* L1 g8 f  H3 `title('信号滤波前时域图');xlabel('时间/秒');ylabel('幅度/伏');
( ~. `3 F' g5 g, t* L4 H7 i' }" Lsubplot(212)
' C1 S& s+ r( VFs=fft(s,512);%傅里叶变换
& p' e* [! G7 _" y8 g  |% fAFs=abs(Fs);%信号频域图的幅值$ E4 m+ E6 m0 ^- `  i
f=(0:255)*fs/512;%频率采样* C$ b, J! E, ~$ [& ^( v/ {
plot(f,AFs(1:256));%滤波前的信号频域图
. @; O( `  [/ [7 E" H. wtitle('信号滤波前频域图');xlabel('频率/赫兹');ylabel('幅度');
) }4 e8 P8 ]& U8 O1 J6 ~figure(3)8 n7 K3 \# T7 o- a; r5 x' g
sf=filter(b,1,s);%对信号进行滤波7 V) s7 `4 h- _# a0 q
subplot(211)
8 G+ {9 w; h& Q. v- lplot(t,sf)%滤波后的信号图像
4 `. \3 ?7 v( b4 `title('信号滤波后时域图');xlabel('时间/秒');ylabel('幅度/伏');8 E- v8 G- W, m2 f4 P
axis([0 0.1 -2 2]);%限定坐标范围
- I1 t  |+ V" a7 n  \* Csubplot(212)
+ ?; M4 d; y2 S/ ?/ O  I! UFsf=fft(sf,512);%滤波后的信号频域图
7 T: Y6 b* w- u; W& l- @AFsf=abs(Fsf);%信号频域图的幅值* ?" P& x3 Y' G/ Q- }9 U2 {
f=(0:255)*fs/512;%频率采样
2 m3 b! z% P2 d0 p* {7 ?0 Rplot(f,AFsf(1:256))%滤波后的信号频域图
" E  J, h, P. X1 K# `title('信号滤波后频域图');xlabel('频率/赫兹');ylabel('幅度');
7 O& Z/ T) L+ ]为什么MATLAB运行的时候b=fir1(N,[0.5*(f2+f1)/(fs/2),0.5*(f4+f3)/(fs/2)],'stopp',kaiser(N+1,beta));会报错。

该用户从未签到

2#
发表于 2020-8-5 15:50 | 只看该作者
你仔细检查一下你的代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-5 15:36 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表