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

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

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

离散频谱的比值校正法-频谱分析的校正方法.pdf 离散频谱的比值校正法 在下帖子中讨论了“MatlabFFT求正玹序列的振幅”https://www.ilovematlab.cn/thread-50611-1-1.html 我在帖子中指出了当“正弦信号的频率不与FFT后的某条谱线相合”,可用校正法来求正弦信号的频率。在这里提供一个比值校正法的程序,它已编写成一个函数,该方法的理论可参看以下附件。 function Z=Specorr [nx,mx]=size; if mx==1, x=x';end [nx,mx]=size; if mx<N     x=[x zeros]; else     x=x; end w=hann; if method==2     xf=fft;     xf=xf/N*4;     WindowType=2; else     xf=fft;     xf=xf/N*2;     WindowType=1; end ddf=fs/N; n1=fix; n2=round;     A=abs;     [Amax,index]=max);     index=index n1-1;     phmax=angle);     %比值法     %矩形     if         indsecL=A>A;         df=indsecL.*A./)-.*A./);         Z=*ddf;         Z=Amax/sinc;         Z=;              end         %比值法     %Hanning     if         indsecL=A>A;         df=indsecL.*-Amax)./)-.*-Amax)./);         Z=*ddf;         Z=*Amax/sinc;         Z=;              end     Z=mod,2*pi);     Z=Z->pi)*pi; 调用格式是 Z=Specorr 其中输入变量 x     是被测信号   fs    采样频率 N    FFT的长度(相当于nfft) nx1,nx2   被测正弦信号频率的区间,nx2>nx1 method   函数的方法,1为矩形,2为海宁 输出变量Z,Z为被测信号的频率,Z为被测信号的幅值,Z为被测信号的初始相角 这里把https://www.ilovematlab.cn/thread-50611-1-1.html 帖子中1层的程序修改一下列于 Fs=1000; n=0:1/Fs:1; xn=10 15*sin randn); nfft=1024; Xn = fftshift); Xn=Xn/2; A=2*abs/Fs; subplot,plot subplot stem xlabel,ylabel P=Xn.*conj/nfft; xlim Z=Specorr 这样得到Z为 Z =    10.0003   15.0009    1.5693 信号频率为10.0003,幅值为15.0009,初始相角为1.5693。初始相角是以余弦信号为准,正弦信号正好差pi/2。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值