erdgzw 发表于 2008-1-31 10:19

纵坐标能量幅值的问题?

时间信号x(n),n=1,2,...,N;经FFT后得X(k),k=1,2,...,N。

我的程序在FFT后X处为什么幅值很大,就是FFT后频谱图横坐标的第一个点。
而这个点并不是基频。是否应该消除?怎样消除?

zhlong 发表于 2008-1-31 10:45

第一个是频率为0的分量
去均值就可以消除

erdgzw 发表于 2008-1-31 11:01

本帖最后由 wdhd 于 2016-9-8 15:02 编辑

原帖由 zhlong 于 2008-1-31 10:45 发表
第一个是频率为0的分量
去均值就可以消除
怎么去均值? X(1)= X(1)/N(采样点数)吗?

songzy41 发表于 2008-1-31 12:24

在时间域上消去直流分量:
xmean=mean(x);
x=x-xmean;

erdgzw 发表于 2008-1-31 13:41

本帖最后由 wdhd 于 2016-9-8 15:02 编辑

原帖由 songzy41 于 2008-1-31 12:24 发表
在时间域上消去直流分量:
xmean=mean(x);
x=x-xmean;
我先声明一点,我用的不是matlab,我也不会用。
我的程序是用C++写的。所以mean(x)是什么意思我不懂。
怎么个平均法?

[ 本帖最后由 erdgzw 于 2008-1-31 13:47 编辑 ]

erdgzw 发表于 2008-1-31 14:07

我用C++写了一下,不知道对不。
    double avg;
      for(int i=0; i < Count; i++)
          avg+=wave(i);
      avg/=Count;
      for(int i = 0; i < Count; i++)
          wave(i)-=avg;
不管对不对结果最后还真去掉了。
但还是不明白,为什么会这样?

zhlong 发表于 2008-1-31 14:12

频率轴上的刻度为*fs/N            N——信号长度
所以第一根谱线是频率为0的分量,即直流分量;去均值,就是减去直流分量。

erdgzw 发表于 2008-1-31 14:54

那是否应该消除?
页: [1]
查看完整版本: 纵坐标能量幅值的问题?