基于MATLAB的FFT频谱内频率和幅度的校正算法

1、当对AD信号采集时,当采样频率需要满足采样定理时,数据经过FFT后,可以找到波峰。
2、时域的幅度和频域的幅度有对应关系
基于MATLAB的FFT频谱内频率和幅度的校正算法_第1张图片
可以看到在频率等于1附近处得到能量波峰,但是他的幅度没有到1,也就是存在频谱泄露。
3、解决方法:
(1)使用不2幂次fft
当被采信号为已知信号时,只要让被采信号落到谱线上,也可以得到正确的能量值。
比如以上:采样频率为10M,被采信号为1M,那fft的点数可以为10的整数倍即可。
基于MATLAB的FFT频谱内频率和幅度的校正算法_第2张图片
(2)加窗函数
a、如果信号是随机信号或者未知信号,或者有多个频率分量,测试关注的是频率点而非能量大小,建议选择汉宁窗,像LMS Test.Lab中默认加的就是汉宁窗。
b、对于校准目的,则要求幅值精确,平顶窗是个不错的选择。
c、如果同时要求幅值精度和频率精度,可选择凯塞窗(Kaiser
d、 如果检测两个频率相近、幅值不同的信号,建议用布莱克曼窗
窗的矫正系数
基于MATLAB的FFT频谱内频率和幅度的校正算法_第3张图片
基于MATLAB的FFT频谱内频率和幅度的校正算法_第4张图片

以上程序中,加hanning窗,经过矫正算法后,得出比较接近于1M的被采信号和幅度。
精度会随着fft的点数增加而增加。
源码地址:https://download.csdn.net/download/sinat_39724439/85435437

你可能感兴趣的:(信号处理,MATLAB,matlab,算法)