bandp这个不是matlab自带的函数吧,网上搜了一下其代码是:
- function y=bandp(x,f1,f3,fsl,fsh,rp,rs,Fs)
- %带通滤波
- %使用注意事项:通带或阻带的截止频率与采样率的选取范围是不能超过采样率的一半
- %即,f1,f3,fs1,fsh,的值小于 Fs/2
- %x:需要带通滤波的序列
- % f 1:通带左边界
- % f 3:通带右边界
- % fs1:衰减截止左边界
- % fsh:衰变截止右边界
- %rp:边带区衰减DB数设置
- %rs:截止区衰减DB数设置
- %FS:序列x的采样频率
- % f1=300;f3=500;%通带截止频率上下限
- % fsl=200;fsh=600;%阻带截止频率上下限
- % rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值
- % Fs=2000;%采样率
- %
- wp1=2*pi*f1/Fs;
- wp3=2*pi*f3/Fs;
- wsl=2*pi*fsl/Fs;
- wsh=2*pi*fsh/Fs;
- wp=[wp1 wp3];
- ws=[wsl wsh];
- %
- % 设计切比雪夫滤波器;
- [n,wn]=cheb1ord(ws/pi,wp/pi,rp,rs);
- [bz1,az1]=cheby1(n,rp,wp/pi);
- %查看设计滤波器的曲线
- [h,w]=freqz(bz1,az1,256,Fs);
- h=20*log10(abs(h));
- figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;
- y=filter(bz1,az1,x);
- end
复制代码
从这里可以看出wsl和wsh分别是切比雪夫滤波器的阻带转折频率上下限
|