yangcui 发表于 2007-1-23 19:21

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

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

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

songzy41 发表于 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=;
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。得到的谱图如下。

yangcui 发表于 2007-1-25 11:57

songzy41 ,您好!十分感谢您能提供帮助!

liujia1067 发表于 2008-4-9 16:41

同样受益1:lol :lol

shizijun 发表于 2010-9-21 14:57

回复 songzy41 的帖子
请问具体原理是什么啊,谢谢

impulse 发表于 2010-9-21 15:07

实际上就是原始信号分段,求psd,再对psd求平均。也叫Welch方法。看看matlab中的psd,csd。

土木年华 发表于 2010-9-23 11:11

回复 songzy41 的帖子

呵呵 ,对!
页: [1]
查看完整版本: 请教高手一个信号滤波处理的问题!