zoukankan      html  css  js  c++  java
  • FFT之频率与幅值的确定(转)

    FFT之后得到的是什么数
    FFT之后得到的那一串复数是波形对应频率下的幅度特征,注意这个是幅度特征不是复制,下面要讲两个问题:1.如何获取频率,2.如何获取幅值

    获取频率
    FFT变换如何获取频率?傅里叶变换并没对频率进行任何计算,频率只与采样率和进行傅里叶变换的点数相关,注意这里是进行傅里叶变换的点数而不一定是信号的长度。
    FFT变换完第一个数时0Hz频率,0Hz就是没有波动,没有波动有个专业一点的说法,叫直流分量。
    后面第二个复数对应的频率是0Hz+频谱分辨率,每隔一个加一次,频谱分辨率Δf计算公式如下:
    Δf=FsN
    式中:
    Fs为采样率
    N为FFT的点数
    因此只要Fs和N定了,频域就定下来了。

    FFT变换后的第一个实数 - 直流分量
    FFT之后的第一个结果表示了时域信号中的直流成分的多少,所谓直流信号,代表和基准0的偏移量。
    上面的结果不好说明,下面再看一个例子:

    oneWave = [1,1,1,1,1,1,1,1];fft(oneWave)
    输出:

    8 0 0 0 0 0 0 0

    oneWave 的直流分量是1,但计算结果是8,这里又引入一个问题,FFT之后的数值不是真实的幅值,需要进行转转换,第一个点需要除以N,才能还原为原来的结果

    FFT变换后的复数模 - 幅度
    假设原始信号的峰值为A,那么FFT的结果的每个点(除了第一个点直流分量之外)的模值就是A
    的N/2倍。而第一个点就是直流分量,它的模值就是直流分量的N倍

    也就是说,要得出真实幅值,需要把除了第1个点(i=0)以及最后一个点(i=N/2)除以N以外,其余点需要求得的模除以N/2
    这是因为傅里叶级数对应时域幅值,其中已经包含了1/N项,而fourier变换中没有该系数,
    所以,进行完fft变换后需除以N/2才能与时域对应上。
    FFT的计算公式
    Fn=∑i=0N−1xie−2πjNni
    实际应用中,只有i=0~N/2是有用的
    全世界绝大部分的FFT算法计算出来后都需要进行幅度的转换的,幅值根据需求有不同需求

  • 相关阅读:
    【JavaWeb】SpringBoot配置静态资源路径
    apache和nginx设置反向代理
    【other】idea格式化快捷键ctr+alt+L与qq锁定冲突
    【深入Java基础】各个Map类的比较与总结
    【EmguCv】瞳孔定位(二)
    【深入Java基础】LinkedHashMap的特点与原理
    彪神666(暴力即可)
    被打脸的潇洒哥(推递推式)
    送气球.jpg(模拟)
    赌神(逆向思维)
  • 原文地址:https://www.cnblogs.com/bile/p/11799554.html
Copyright © 2011-2022 走看看