声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5941|回复: 23

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

[复制链接]
发表于 2007-7-30 00:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我自己写的一个滤波程序,大家看看顺便帮我解决个问题,程序如下:
%频域低通和带通滤波
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 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-7-30 00:17 | 显示全部楼层
我把一个实测信号滤波后,滤除1000Hz以上的频率,但是FFt后1000Hz以上的频率还存在,看看是我的程序有问题,还是我吧频域滤波给理解错了。
3.png

123.mat

60.24 KB, 下载次数: 46

数据

 楼主| 发表于 2007-7-30 09:38 | 显示全部楼层
各大版主都哪里去了,帮忙看看啊:@Q

[ 本帖最后由 zhlong 于 2007-7-30 10:37 编辑 ]
发表于 2007-7-30 09:42 | 显示全部楼层

回复 #3 16443 的帖子

有个zhang版主,啃英语书呢。现在放假期间人少,你别太着急啊
发表于 2007-7-30 10:10 | 显示全部楼层
和原信号相比谱图相比,消噪的效果已经体现出来了
原信号谱图.jpg
发表于 2007-7-30 10:15 | 显示全部楼层

回复 #5 zhlong 的帖子

楼主的意思是1000之后能不能都消失,这样消噪才撤底啊
发表于 2007-7-30 10:26 | 显示全部楼层
我也看了一下,同意zhlong的意见,程序并没有错误,与原始信号相比在1000Hz以上已滤波了,只是滤波得不理想。其原因是楼主在频域选用了矩形窗作滤波器,这显然不是一种很好的滤波方法。
 楼主| 发表于 2007-7-30 15:23 | 显示全部楼层

回复 #7 songzy41 的帖子

那么选用什么窗能有好的效果那,我想要使1000Hz以上的频率最好都滤掉。
这样的图形就显示的比较明显了
发表于 2007-7-31 08:55 | 显示全部楼层
其它设计滤波器的方法很多,有FIR、IIR、还有其它的。但从楼主的原始信号谱图中(#5)可看到,在1000Hz以上的频段信号的幅值已比最高值小了80dB,对于大部分的滤波器阻带也只是衰减到60-80dB,要选择衰减更大的,系数个数要更多,在计算精度上也要求更高,可能难于达到。

评分

1

查看全部评分

 楼主| 发表于 2007-7-31 10:21 | 显示全部楼层

回复 #9 songzy41 的帖子

那我不需要1000Hz以上的成分,只需1000分析1000以下的成分,因为1000以上的对我这个结构没有工程实际意义,该怎么做?
发表于 2007-7-31 10:25 | 显示全部楼层

回复 #10 16443 的帖子

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

[ 本帖最后由 zhlong 于 2007-7-31 10:26 编辑 ]
 楼主| 发表于 2007-7-31 11:32 | 显示全部楼层

回复 #11 zhlong 的帖子

你能用HHT帮我把这个信号给分析一下吗
我想看看时间与频率。频率与幅值有个怎样的关系 、
发表于 2007-7-31 12:38 | 显示全部楼层
你这个信号又是和你以前发的那个帖子一样的问题,低频是主要分量。
1.png
 楼主| 发表于 2007-7-31 13:33 | 显示全部楼层

回复 #13 zhlong 的帖子

和以前那个是一个模型的,这个是实测的,我以前发的是模拟求得的信号。
你就帮我分析一下吧,我不会用HHT,我想看个结果
发表于 2008-7-7 17:59 | 显示全部楼层

请教楼主一个问题

a(nfft-nmax+1:nfft-nmin+1)=y(nfft-nmax+1:nfft-nmin+1); %将y负频率阻带内的元素值置为0
程序中这句怎么实现的“将y负频率阻带内的元素值置为0”?我运行程序后还是不太理解。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-25 16:36 , Processed in 0.080823 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表