乔山办公网我们一直在努力
您的位置:乔山办公网 > office365 > 用MATLAB怎么设计带通滤波器?那个firls函数好像没有...

用MATLAB怎么设计带通滤波器?那个firls函数好像没有...

作者:乔山办公网日期:

返回目录:office365


窗函数设计e69da5e887aae799bee5baa6e997aee7ad94334低通滤波器:
fp=1000;
fc=1200;
as=100;
ap=1;
fs=22000;
wp=2*fp/fs;
wc=2*fc/fs;
N=ceil((as-7.95)/(14.36*(wc-wp)/2))+1;
beta=0.1102*(as-8.7);
window=Kaiser(N+1,beta);
b=fir1(N,wc,window);
freqz(b,1,512,fs);

高通滤波器:
fs=22000;
Wp=2*5000/fs;
Ws=2*4800/fs;
Ap=1;
As=100;
N=ceil(8*pi/(Wp-Ws))+1;
N=N+mod(N+1,2)+1;
Wc=(Wp+Ws)/2/pi;
h=fir1(N,Wc,'high');
omega=linspace(0,pi,512);
freqz(h,1,omega);

带通滤波器:
fs=22000;
Wp1=2*1200/fs;
Wp2=2*3000/fs;
Wc1=2*1000/fs;
Wc2=2*3200/fs;
Ap=1;
As=100;
W1=(Wp1+Wc1)/2;
W2=(Wp2+Wc2)/2;
wdth=min((Wp1-Wc1),(Wc2-Wp2));
N=ceil(11*pi/wdth)+1;
b = fir1(N,[W1 W2]);
freqz(b,1,512,fs)

双线性法设计低通滤波器:
fp=1000;
fc=1200;
as=100;
ap=1;
fs=22000;
wp=2*fp/fs;
wc=2*fc/fs; %归一化截止频率
[n,wn]=ellipord(wp,wc,ap,as);%求数字滤波器的最小阶数和归一化截止频率
[b,a]=ellip(n,ap,as,wn);%求传递函数的分子分母系数
freqz(b,a,512,fs);

firls函数是利用最小二乘法使期望频率响应与实际频率响应之间整体误差最小的FIR线性相位滤波器设计函数。它是采用归一化的频率系数来表示滤波器性能的。
你的采样频率是40kHz,则Nyquist频率为20kHz,则可以推算出你的中心频率在0.5处,通带边缘为0.44和0.565。这样你可以设计频率系数选为F=[0, 0.44, 0.5, 0.565, 1],放大特性选为A=[0, 0.01, 1, 0.01, 0](按照-40dB的衰减来确定通带边缘,当然你也可以自己修改。)
之后用b=firls(24,F,A)命令就可以设计出你所需的带通滤波器系数b了。滤波器系数a=1。这样你就获得了所需的滤波器。如果需要更精确的性能,可以增加F和A的插值点。
【认真回复,全部手敲,求赏……】
你得到系数a,b后,你信号也知道吧,假设是x,然后你就用y=filter(b,a,x);
我当时学时也很困惑怎么用,后来我做的尝试,我给你一个例子看看e79fa5e98193e58685e5aeb9362吧,是我学习时自己写的

设计一个高通滤波器,并检验它的性能
采样率为10kHZ
阻带边缘为1.5Khz,衰减为40bB
通带边缘为2kHz,波纹为3Db

>>Fs=1e4;
>>fs=1.5e3;
>>fp=2e3;
>>As=40;
>>Rp=3;
>>wp=2*fp/Fs;
>>ws=2*fs/Fs;
>>[N,wn]=cheb2ord(wp,ws,Rp,As);
>>[b,a]=cheby2(N,As,wn,'high');
>>[db,mag,pha,grd,w]=freqz_m(b,a);
>> subplot(2,2,1);plot(w/pi,mag);
>> axis([0,1,0,1]);
>> setX([0 0.3 0.4 1]);
>>setY([0.01 0.7279 1])
>> title('Magnitude Response');
>> subplot(2,2,2);plot(w/pi,db);
>> axis([0 1 -70 0])
>> setX([0 0.3 0.4 1])
>> setY([-40 -2.7589])
>> title('Magnitude Response in dB');
然后给你一个信号x=cos(0.2*pi*n);
>>n=0:200;
>>x=cos(0.6*pi*n);
>>y=filter(b,a,x);
>>subplot(2,2,3);plot(n,x);
>>subplot(2,2,4);plot(n,y);
>>x1=fft(x,201);
>>x11=abs(x1);
>>subplot(2,2,1);stem(n,x11);
>>y1=fft(y,201);
>>y11=abs(y1);
>>subplot(2,2,2);stem(n,y11);
>>setX([0 60 140 201])
>>title('FFT of y');
>>subplot(2,2,1);stem(n,x11);
>>setX([0 60 140 201])
>>title('FFT of x');
>>g=x11-y11;
>>subplot(2,2,3);stem(n,g);
你运行一下,就可以看到结果,刚好把此信号滤掉

给你一个设计思路,你改变截止频率和阻带衰减就可以了

>> %假设截止频率为W,我随便定义一下
>> %比如wp=0.3*pi;ws=0.4*pi
>> wp=0.3*pi;ws=0.4*pi;
>> %阻带衰减为50分贝
>> %通带波纹为0.2分贝
>> As=50;Rp=0.2;
>> %那么可以用两个函数得到系数a,b
>> [N,wn]=buttord(wp/pi,ws/pi,Rp,As);
>> [b,a]=butter(N,wn);
>> %该滤波器就是从截止频率到无穷远都不响应

这是Chebyshev-I型滤波器设计方法,你可以在此e69da5e887aa7a64334基础上进行修改。
fp=[300 400]; fs=[200 500]; rp=3; rs=18;Fs=2000;%模拟技术指标
wp=fp*2*pi/Fs; ws=fs*2*pi/Fs;%数字技术指标
%模拟低通原型滤波器设计
wap=2*Fs*tan(wp./2);was=2*Fs*tan(ws./2);%预畸变
[n,wn]=cheb1ord(wap,was,rp,rs,'s');
[z,p,k]=cheb1ap(n,rp); [bp,ap]=zp2tf(z,p,k); [h1,w1]=freqs(bp,ap);
Subplot(411); plot(w1,abs(h1)); grid; title(' lowpass G(p)')
%模拟低通原型->模拟带通滤波器
bw=wap(2)-wap(1); w0=sqrt(wap(1)*wap(2));
[bs,as]=lp2bp(bp,ap,w0,bw);
w2=0:pi:4000*pi;
h2=freqs(bs,as,w2);
Subplot(412); plot(w2/2/pi,20*log10(abs(h2))); grid; title(' bandpass H(p)')
%双线性变换法设计数字滤波器
% Note: s=(2/T)(z-1)/(z+1);T=1,that is 2Fs=1,Fs=0.5;
[bz1,az1]=bilinear(bs,as,Fs);
[h3,w3]=freqz(bz1,az1,1024,Fs);
Subplot(413); plot(w3,20*log10(abs(h3))); grid; title(' bandpass DF H1(z)');
% Directly to design H(z) by butter.m
[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs); [bz2,az2]=cheby1(n,rp,wp/pi, 'bandpass');
[h4,w4]=freqz(bz2,az2,1024,Fs);
Subplot(414); plot(w4,20*log10(abs(h4))); grid; title('Bandpass DF H2(z)');

相关阅读

  • 求个<em>microwave</em> <em>office</em>

  • 乔山办公网office365
  • 我有2016版本的,可以帮你免费破解!Microwave Office软件去哪里下载" src="/uploads/tu/814.jpg" style="width: 400px; height: 267px;" />兄弟你下载到了没有,下载到了给我一个好吗》谢谢了 或者你给我
  • 谁有<em>microwave</em> <em>office</em>

  • 乔山办公网office365
  • 链接:百网页链接提取码:pml4里面的EXE,这个是破解和安装一起的,有office2013、office2016、office2019,不过都度是英文版,如果想要office2016的中文版,还要用下面的链接,上面就当内是用
关键词不能为空
极力推荐

聚合标签

ppt怎么做_excel表格制作_office365_word文档_365办公网