声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1802|回复: 6

[滤波] 请教高手一个信号滤波处理的问题!

[复制链接]
发表于 2007-1-23 19:21 | 显示全部楼层 |阅读模式

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

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

x
我作毕业设计要用到信号处理方面的东西,但因为不是学这方面的,碰到了一些难题,因急用,所以还望各位高手指教,不胜感激!
问题是这样的:我上传三个附件,一个是振动响应信号,一个是求自谱的代码,一个是自谱图片。振动响应信号中有两列,第一列是采样时间序列,第二列是响应信号。把第二列是响应信号导入matlab中,用PSD写字本中的代码得到信号的自谱。附件中的图片就是得到的结果。但是峰值之间出现毛刺,现在我想问的是如何把毛刺消除,即将各个峰值间的曲线部分平滑一些。有人说将初始信号经滤波处理即可,但我不理解。
我想问的问题:1、在matlab下如何编制一个低通滤波器,能达到预期效果。
              2、我在PSD写字本中用的代码是不是正确。
              3、如果第二列是响应信号中混有平稳白噪声,是不是必须先滤波,如果是,如何在atlab下编制滤波器。
我的QQ:26319405,望告知,感激不尽!急用!

[ 本帖最后由 zhangnan3509 于 2007-6-5 17:31 编辑 ]

自谱图

自谱图

振动响应信号.txt

24.44 KB, 下载次数: 57

振动响应信号

PSD.txt

78 Bytes, 下载次数: 36

代码

回复
分享到:

使用道具 举报

发表于 2007-1-24 21:19 | 显示全部楼层
实际上可以不用滤波,可用改进周期图法,程序为:
x=load('data1.txt');
y=x(:,2);
fs=1000;
nfft=1024;
window=boxcar(length(y));
subplot 211;
periodogram(y,window,nfft,fs);
Ns= 256;
n=[0: Ns/2-1];
pxx1 =abs(fft(y(1:256), Ns).^2)/Ns;
pxx2=abs(fft(y(129:384), Ns).^2)/Ns;
pxx3=abs(fft(y(257:512), Ns).^2)/Ns;
pxx4=abs(fft(y(385:640), Ns).^2)/Ns;
pxxS=abs(fft(y(513:768), Ns).^2)/Ns;
pxx6=abs(fft(y(641:896), Ns).^2)/Ns;
pxx7=abs(fft(y(769:1001), Ns).^2)/Ns;
Pxx= 10 * log10((pxx1 +pxx2+pxx3+pxx4+pxxS+pxx6+pxx7)/7);
f = fs*n/Ns;
subplot 212; plot(f, Pxx(n+1));
xlabel (' Frequency' );
ylabel('PowerSpectrum (dB)');
title('Averaged Periodogram (halfovgrlap)');
grid;
其中把振动响应信号.txt改为名称data1.txt。得到的谱图如下。

周期图法和改进周期图法比较

周期图法和改进周期图法比较
 楼主| 发表于 2007-1-25 11:57 | 显示全部楼层
songzy41 ,您好!十分感谢您能提供帮助!
发表于 2008-4-9 16:41 | 显示全部楼层
同样受益1:lol :lol
发表于 2010-9-21 14:57 | 显示全部楼层
回复 songzy41 的帖子
请问具体原理是什么啊,谢谢

发表于 2010-9-21 15:07 | 显示全部楼层
实际上就是原始信号分段,求psd,再对psd求平均。也叫Welch方法。看看matlab中的psd,csd。
发表于 2010-9-23 11:11 | 显示全部楼层
回复 songzy41 的帖子

呵呵 ,对!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 12:58 , Processed in 0.055395 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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