great2001 发表于 2007-4-25 21:54

请问下列数据的频谱对吗?

附件里是一个采样数据,由于存在噪声,因此希望分析得出该数据的主频率,从而根据情况实现滤波,因此设计了下面的程序,不知道正确与否,还望高手指教
%%%%%%%%%%Code%%%%%%%%%%%%
load Value.txt
Fs=20;%采样频率
t=0:1/Fs:(length(Value)-1)/Fs;
x=Value;
nfft=256;
y=fft(x,nfft);
n=0:length(y)-1;
f=Fs*n/length(y);
subplot(211)
plot(t,x,'b*')
hold on
plot(t,x,'b-')
grid on
subplot(212)
plot(f,abs(y));
title('频谱图')
xlabel('频率Hz')
grid on

songzy41 发表于 2007-4-26 07:05

从数据波形来看,有很大的直流分量,这样在作谱分析后,在0频率处幅值很大,而信号中感兴趣的频率却看不出了。建议在FFT之前消去直流。

great2001 发表于 2007-4-26 19:33

刚才清除了COOKIES,好不容易才登录上呀,谢谢songzy41兄的指正,查阅了论坛上的相关帖子,对原始信号进行了消除直流处理,这下能够清除的发现各个频率段,修正后的程序如下:
load Value.txt;
Fs=25;
t=0:1/Fs:(length(Value)-1)/Fs;
x=Value;
x=(x-mean(x))/std(x);
N=length(x);
fx=fft(x);
df=Fs/N;
n=0:N/2;
f=n*df;
subplot(211);
plot(t,Value);grid;
xlabel('Time')
ylabel('Value')
subplot(212);
plot(f,abs(fx(n+1))*2/N); grid;
xlabel('Freq')
ylabel('Magnitude')
现在有以下问题需要请教:
1、根据以上程序对原始采样数据计算的频幅关系对吗?
2、从下列频幅关系可以发现大约在0.18、1.2Hz处有两个峰,我想这可能就是上述采样数据的频率吧,但是哪个才是真正的主频,哪个是噪声呢?有什么标准,或者要看实际情况?
3、如果进行低通滤波(比如说在2Hz以下),应选用什么语句?谢谢指教

songzy41 发表于 2007-4-28 06:33

原帖由 great2001 于 2007-4-26 19:33 发表
现在有以下问题需要请教:
1、根据以上程序对原始采样数据计算的频幅关系对吗?
2、从下列频幅关系可以发现大约在0.18、1.2Hz处有两个峰,我想这可能就是上述采样数据的频率吧,但是哪个才是真正的主频,哪个是噪声呢?有什么标准,或者要看实际情况?
3、如果进行低通滤波(比如说在2Hz以下),应选用什么语句?谢谢指教

1、对的;
2、对于楼主的信号源不了解,对0.18、1.2Hz处有两个峰很难作判断。从信号波形来看,好象除了有直流分量外还有一趋势项,0.18Hz的峰值有可能是由该趋势造成。但是否是趋势项,要结合信号来判断的。
3、有关低通滤波器的设计,有许多书中都有介绍。
页: [1]
查看完整版本: 请问下列数据的频谱对吗?