声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1460|回复: 7

[FFT] 纵坐标能量幅值的问题?

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

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

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

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

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

使用道具 举报

发表于 2008-1-31 10:45 | 显示全部楼层
第一个是频率为0的分量
去均值就可以消除
 楼主| 发表于 2008-1-31 11:01 | 显示全部楼层
本帖最后由 wdhd 于 2016-9-8 15:02 编辑
原帖由 zhlong 于 2008-1-31 10:45 发表
第一个是频率为0的分量
去均值就可以消除

怎么去均值? X(1)= X(1)/N(采样点数)吗?
发表于 2008-1-31 12:24 | 显示全部楼层
在时间域上消去直流分量:
xmean=mean(x);
x=x-xmean;

评分

1

查看全部评分

 楼主| 发表于 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 编辑 ]
 楼主| 发表于 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;
不管对不对结果最后还真去掉了。
但还是不明白,为什么会这样?
发表于 2008-1-31 14:12 | 显示全部楼层
频率轴上的刻度为[0:1:N/2-1]*fs/N            N——信号长度
所以第一根谱线是频率为0的分量,即直流分量;去均值,就是减去直流分量。
 楼主| 发表于 2008-1-31 14:54 | 显示全部楼层
那是否应该消除?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-26 22:30 , Processed in 0.058063 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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