%设计数字巴特沃斯带通滤波器,
%通带025pi rad<w<045pi
%通带最大衰减为3dB,阻带最小衰减为40dB
%阻带范围0<w<015pi,055pi<w<pi
clc;
clear all;
close all;
wp=[025,045];
ws=[015,055];
rp=3;
rs=40;
[N,wc]=buttord(wp,ws,rp,rs);
[B,A]=butter(N,wc);//这里的N是最低阶数,我想将N改变一下就可以了吧
plot(linspace(0,pi,1024),20log10(abs(freqz(B,A,1024))))
grid on;
xlabel('\\omega(0,pi)');
ylabel('dB');
title('滤波器衰减函数曲线图');
模拟频率和数字频率转换关系:
w=2pif/Fs;
我想这样也行吧:
wc=wp(10^(01ap)-1)^(-1/(2N))
wc为中心频率;
wp为通带截止频率
ap为通带衰减;
N为滤波器阶数
再用[B,A]=butter(N,wc)
简单的理解:滤波器的阶数,就是滤波几次的意思,一阶,就是对谐波过滤一次,两阶,就是对谐波过滤两次,如此往下推就好了……
滤波器的阶数越高,滤波效果越好,但是,成本也会成倍的增加,因此,选择合适的阶数是非常重要的。对于低通滤波器,一般用的都是butterworth的,以保证通带内平坦,阶数的计算方法公式编辑器编辑的公式复制不了,matlab语言了
n=log10(10^(01As-1))/log10(ws);%最小阶数
ws是止带归一化频率
As是止带衰减
其实没必要自己算设置minimum order就行了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)