我的FFT怎么只有直流分量呢?
不知道怎么回事,FFT变换后结果只有直流分量,麻烦大家帮忙分析分析,可能哪里有问题,我的QQ337103372源代码见附件。
程序:
clc
clear
close all
SampleData=load('3.txt')
x=SampleData(1:512)
subplot(311)
plot(x)
title('512个样本点,fs=100')
grid on
%---------------------------------------
%FFT变换
%---------------------------------------
fs=100
N=512
n=0:N-1;
y=fft(x,N);%进行fft变换
mag=abs(y);%求幅值
f=n*fs/length(y);%进行对应的频率转换
subplot(312);
plot(f,mag);%做频谱图
title('FFT变换后的频谱图')
grid on
y=fftshift(fft(x,N));%进行fft变换
mag=abs(y);%求幅值
n=-(N-1)/2:(N-1)/2
f=n*fs/length(y);%进行对应的频率转换
subplot(313);
plot(f,mag);%做频谱图
title('零頻移到中央后的频谱图')
grid on 信号中的直流分量太大,在FFT之前先去除直流,再FFT分析就能改善。 不好意思,我不是信号处理专业的,你能详细的说说吗?怎么去除直流分量 LZ算fft前先去除趋势项或平均值, 具体动手搜下 在FFT前做
x=x-mean(x); 本帖最后由 wdhd 于 2016-9-18 13:51 编辑
原帖由 songzy41 于 2009-5-9 18:29 发表
在FFT前做
x=x-mean(x);
我在其他论坛也看到大家说如果是实测数据要先去除直流分量和趋势项,再做FFT变换。我想问一下,使用x=x-mean(x); 可以去掉直流分量,但是趋势项可以去掉吗?也就是说使用你这条语句可以同时去掉直流分量和趋势项吗?不好意思,我不是信号处理专业的。 matlab中有个detrend函数可以去掉直流分量,直接用就行吧? 本帖最后由 wdhd 于 2016-9-18 13:52 编辑
原帖由 fangdian 于 2009-5-9 23:17 发表
matlab中有个detrend函数可以去掉直流分量,直接用就行吧?
这个我不太清楚,但是用上面那位仁兄说的倒确实可以去掉直流分量,我现在的问题是如何去掉趋势项 帮你搜了哈
这个应该对你有帮助
http://forum.vibunion.com/forum/vi ... =%C7%F7%CA%C6%CF%EE
http://forum.vibunion.com/forum/viewthread.php?tid=46696&extra=&highlight=%C7%F7%CA%C6%CF%EE&page=2
[ 本帖最后由 yelv123 于 2009-5-10 14:23 编辑 ]
页:
[1]