16443 发表于 2007-7-30 00:13

大家看看我的滤波程序哪里有问题

我自己写的一个滤波程序,大家看看顺便帮我解决个问题,程序如下:
%频域低通和带通滤波
clc;clear
load 123 %加载原始信号
x=sig;
fs=1/200E-6;
fmin= 0;   %最小截止频率,为0时是低通,不为0时是带通
fmax=1000;   %最高截止频率
n=length(x);
t=(0:1/fs:(n-1)/fs)';
nfft=2^nextpow2(n);       %取大于并接近n的2的幂次方为FFT长度
nmin=round(fmin*nfft/fs+1); %四舍五入取整求最小截止频率对应数组元素的下标
nmax=round(fmax*nfft/fs+1); %四舍五入取整求最大截止频率对应数组元素的下标
y=fft(x,nfft);
a=zeros(1,nfft);
a(nmin:nmax)=y(nmin:nmax);      %将y正频率阻带内的元素值置为0
a(nfft-nmax+1:nfft-nmin+1)=y(nfft-nmax+1:nfft-nmin+1); %将y负频率阻带内的元素值置为0
y=ifft(a,nfft);
y=(real(y(1:n)))';%取变换实部n个结果为滤波列向量
subplot (2 ,1 ,1)
plot(t,x);
title('滤波前的信号');
grid on
subplot(2,1,2)
plot(t,y);
title('滤波后的信号');
grid on
%滤波后FFT
x=y;
N=length(y);
X=fft(y);
nn=1:N;
ff=(0:N/2)/N*fs;
figure;
plot(ff,20*log10(abs(X(1:N/2+1)*2/N)));
grid on;

问题见下楼。

[ 本帖最后由 16443 于 2007-7-30 00:14 编辑 ]

16443 发表于 2007-7-30 00:17

我把一个实测信号滤波后,滤除1000Hz以上的频率,但是FFt后1000Hz以上的频率还存在,看看是我的程序有问题,还是我吧频域滤波给理解错了。

16443 发表于 2007-7-30 09:38

各大版主都哪里去了,帮忙看看啊:@Q

[ 本帖最后由 zhlong 于 2007-7-30 10:37 编辑 ]

bingbing1110 发表于 2007-7-30 09:42

回复 #3 16443 的帖子

有个zhang版主,啃英语书呢。现在放假期间人少,你别太着急啊

zhlong 发表于 2007-7-30 10:10

和原信号相比谱图相比,消噪的效果已经体现出来了

bingbing1110 发表于 2007-7-30 10:15

回复 #5 zhlong 的帖子

楼主的意思是1000之后能不能都消失,这样消噪才撤底啊

songzy41 发表于 2007-7-30 10:26

我也看了一下,同意zhlong的意见,程序并没有错误,与原始信号相比在1000Hz以上已滤波了,只是滤波得不理想。其原因是楼主在频域选用了矩形窗作滤波器,这显然不是一种很好的滤波方法。

16443 发表于 2007-7-30 15:23

回复 #7 songzy41 的帖子

那么选用什么窗能有好的效果那,我想要使1000Hz以上的频率最好都滤掉。
这样的图形就显示的比较明显了

songzy41 发表于 2007-7-31 08:55

其它设计滤波器的方法很多,有FIR、IIR、还有其它的。但从楼主的原始信号谱图中(#5)可看到,在1000Hz以上的频段信号的幅值已比最高值小了80dB,对于大部分的滤波器阻带也只是衰减到60-80dB,要选择衰减更大的,系数个数要更多,在计算精度上也要求更高,可能难于达到。

16443 发表于 2007-7-31 10:21

回复 #9 songzy41 的帖子

那我不需要1000Hz以上的成分,只需1000分析1000以下的成分,因为1000以上的对我这个结构没有工程实际意义,该怎么做?

zhlong 发表于 2007-7-31 10:25

回复 #10 16443 的帖子

不可能完全去除1000HZ以上的频率成分吧,按你的程序-80db已是你信号直流分量幅值的1/10000了,应该影响很小了。

[ 本帖最后由 zhlong 于 2007-7-31 10:26 编辑 ]

16443 发表于 2007-7-31 11:32

回复 #11 zhlong 的帖子

你能用HHT帮我把这个信号给分析一下吗
我想看看时间与频率。频率与幅值有个怎样的关系 、

zhlong 发表于 2007-7-31 12:38

你这个信号又是和你以前发的那个帖子一样的问题,低频是主要分量。

16443 发表于 2007-7-31 13:33

回复 #13 zhlong 的帖子

和以前那个是一个模型的,这个是实测的,我以前发的是模拟求得的信号。
你就帮我分析一下吧,我不会用HHT,我想看个结果

zhly 发表于 2008-7-7 17:59

请教楼主一个问题

a(nfft-nmax+1:nfft-nmin+1)=y(nfft-nmax+1:nfft-nmin+1); %将y负频率阻带内的元素值置为0
程序中这句怎么实现的“将y负频率阻带内的元素值置为0”?我运行程序后还是不太理解。
页: [1] 2
查看完整版本: 大家看看我的滤波程序哪里有问题