作业帮 > 综合 > 作业

Matlab里面模拟滤波器函数怎么使用啊?

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/07 02:28:33
Matlab里面模拟滤波器函数怎么使用啊?
我用buttord和buffer得到了拉普拉斯变换的分子分母多项式系数b,a.那接下去我想用这个滤波器去滤波处理一个信号,请问怎么编写程序啊?
我想设计一个模拟滤波器的话怎么做?就是从截止频率到无穷都是截止的.
Matlab里面模拟滤波器函数怎么使用啊?
你得到系数a,b后,你信号也知道吧,假设是x,然后你就用y=filter(b,a,x);
我当时学时也很困惑怎么用,后来我做的尝试,我给你一个例子看看吧,是我学习时自己写的
设计一个高通滤波器,并检验它的性能
采样率为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);
>> %该滤波器就是从截止频率到无穷远都不响应