如何由fft运算结果得出组成原始信号的各分量的频率及功率
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何由fft运算结果得出组成原始信号的各分量的频率及功率相关的知识,希望对你有一定的参考价值。
问题如题!请说得详细一点儿,最好有公式,有C的算法最好。
参考技术A fft运算的结果是一个包含实部和虚部的复数,如:x[n]=x[n].real+x[n].img;各分量的功率计算为:p[n]=(x[n].real*x[n].real+x[n].img*x[n].img)/n;总功率为:各分量功率和。分量频率为:分辨率*序列号,分辨率=采样频率/n。 参考技术B 用了递归方式,用了树的方式降低计算量
np.fft.fft()结果的物理意义
参考技术A 采样定理:采样频率大于信号中最高频率的2倍时,采样后的数字信号可以完整地恢复出原始信号。一般实际应用中保证采样频率为信号最高频率的2.56~4倍。假设信号频率为F,采样频率为Fs,采样点数为N。为了方便进行FFT运算,通常N取2的整数次幂。
N个采样点,经过fft变换后的结果为N个复数,每个复数对应一个频率(第n<=N/2个点对应的频率为 (n-1)/N*Fs ),该复数的模值表示该频率的振幅特征。该振幅特征和原始信号的振幅之间的关系是: 如果原始信号的振幅为A,则fft结果的每个点(除了第一个直流分量点)的模值就是A的N/2倍;而第一个点的模值是直流分量振幅的N倍。
注意:这N个复数点去掉第一个点后剩下的N-1个点是关于其中心共轭对称的,因此实际只需要取前一半点的频谱即可,因为共轭对称的两个点的模值(振幅)相同。
我们先模拟一个一维时序信号 y ,它由2V的直流分量(0Hz),和振幅为3V,频率为50Hz的交流信号,以及振幅为1.5V,频率为75Hz的交流信号组成:
y = 2 + 3*np.cos(2*np.pi*50*t) + 1.5*np.cos(2*np.pi*75*t)
然后我们采用256Hz的采样频率,总共采样256个点。
傅里叶变换结果如下图所示, no normalization 对应的是原始的fft结果, normalization 是将fft结果的振幅特征转换为原始信号的振幅,可以看到振幅为2V,3V,1.5V的信号分别被解析了出来。
以上是关于如何由fft运算结果得出组成原始信号的各分量的频率及功率的主要内容,如果未能解决你的问题,请参考以下文章