[讨论]带通滤波器程式码一问

楼主: Eenie (Eenie)   2014-08-14 13:08:27
小弟利用网络查询相关资料等,撰写了一个butterworth的带通滤波器,
不过对于部份程式码有些疑问,想请教各位高手。
程式码如下
目前想请问
1.第7行plot(10*t(1:76),x(1:76))其中时间t*10之目的?
2.第10行之f是取样频率吗,而"130"乘上(0:255)/512之目的为何?
3.第11行D1=fft(x,512)做傅立叶转换刮号内512之意义为何?
clc
clear
t=0:0.008:0.6; %时间区间为0-0.6s
x= cos(2*pi*100*t); %初始讯号
figure(1)
subplot(421)
plot(10*t(1:76),x(1:76)) %(第7行)
xlabel('time');
ylabel('amplitude');
f=130*(0:255)/512;%(第10行)
D1=fft(x,512); %(第11行) fft后之频率范围为0 ~ fs
subplot(422)
plot(f,abs(D1(1:256)));
xlabel('frequncy');
ylabel('output signal(initial)');
%butterworth
cut_f1=20/(130/2);%正规化的截止频率,介于 0 和 1 之间,当取样频率是 fs 时,所
能处理的最高频率是 fs/2,所以如果实际的截止频率是 f = 1000,那么 Wn = f/(fs/2)
cut_f2=30/(130/2);
N=9;%滤波器之阶数,阶数越大,滤波效果越好
[b,a]=butter(N,[cut_f1 cut_f2]);%band pass
y2=filter(b,a,x(1:76));
subplot(423)
plot(10*t(1:76),y2);
xlabel('time');
ylabel('amplitude');
D2=fft(y2,512);
subplot(424)
plot(f,abs(D2(1:256)));
xlabel('frequncy');
ylabel('output signal(band pass)');

Links booklink

Contact Us: admin [ a t ] ucptt.com