做的是10HKZ的低通滤波器,主要是想滤掉100HZH的噪声。但是时域图不对!哪里出问题了,帮帮忙~看看呗!谢谢啦
clear all;close all;clc; %清除所有变量,窗口以及命令窗口内容
%数据处理函数部分
fs=500000000; %采样频率
x=load('F:data.txt');%附件的代码数据
N=length(x);
a=mean(x); %mean求向量元素的平均值
ac=x-a;%去掉直流分量的干扰
n=0:N-1;
t=n/fs; %时间序列
figure(1);
subplot(211),plot(n,ac,'r');%时域的波形图
grid on;
f=n*fs/N; %频率序列
nf=2^nextpow2(t);
%nf1=0:ceil(nf/2);
Yp=fft(ac,nf);
k=fs*linspace(0,1,nf)-fs/2;
% k=fs*linspace(0,1,nf)-fs/2;
subplot(212),plot(k,abs(Yp),'b'); %信号的频谱图
ws=10000;%通带截止频率
wp=20000;%阻带起始频率
ds=50;%阻带衰减
ws1=2*pi*ws/fs;%经采样后的通带截止角频率
wp1=2*pi*wp/fs; %阻带经采样后的通带截止角频率
wd=(wp1+ws1)/2;%归一化后的滤波器截止频率
nn=ceil(6.6*pi/(wp1-ws1));%利用7-3求滤波器长度
% Y=fir1(nn-1,wd/pi,hanning(nn));%滤波器时域函数
Y=fir1(nn-1,wd/pi,hanning(nn));%滤波器时域函数
signal=conv(x,Y);
subplot(212),plot(fs*nx,signal);
title('经滤后的信号时域图');
xlabel('时间');
ylabel('幅度');
grid on;
nx=(0:nn-1)/fs;
lx=2^nextpow2(nx);
Y1=fft(signal,lx);
k=(0:(lx-1))*fs/lx;
figure(2);
% subplot(2,1,1),plot(k,abs(Yp)); %信号的频谱图
% subplot(2,1,2),
plot(k,abs(Y1)); %信号的频谱图
title('滤波后信号频谱');
xlabel('频率');
ylabel('幅度');
grid on;
2011-10-27 16:19 上传
点击文件名下载附件
361.84 KB, 下载次数: 3105