2022年多种频谱校正方法及matlab代码 .pdf
多种频谱校正方法采样间隔归一化成1T,采样长度为N.这样 FFT 离散谱线为0,1)iXiN(,相应的频率分辨率2/(1/)NfN.设 FFT 离散谱线局部极高谱线为m(为了数学上简洁,假定从 0开始,注意在 MATLAB环境下数组实际操作的是从1 开始),记频偏量.我们需要使用谱线m和与之相邻一条次高谱线,记这连续两条谱线中左边一条序号为M(当次高谱线在m左侧时1Mm,反之Mm).下面列出若干算法的计算公式1.加矩形窗的精确谱校正1iiiXUjV111()sin()()cos()MMMMoptMMVVMUUMKUU1211cos()sin()cos()sin()optMMoptMMKMZVUMKMZVUM2121cos()cos()()ZMZMMmZZ2.加矩形窗情形,采用解析单频模型的幅值比校正1,211|()|MMMXMmXX3.加汉宁窗情形,采用解析单频模型的幅值比校正1,2112|()|MMMMXXMmXX4.加矩形窗情形,采用解析单频模型的复比值校正311Re()MMMXMmXX5.加汉宁窗情形,采用解析单频模型的复比值校正3112()MMMMXXMmXX6.加矩形窗情形,采用解析单频模型的复合复比值校正3名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 6 页 -11Re()MmMMXMmXX11mRmmXXX,1111mmLmmmmXXXXXX0.5)0.5)mLmR(7.加汉宁窗情形,采用解析单频模型的复合复比值校正3112Re()MMmMMXXMmXX112mmRmmXXXX,1111221mmmmLmmmmXXXXXXXX0.5)0.5)mLmR(8.加矩形窗,Quin 校正 411Re()Re(),Re()Re()mmLRmmXXXX11LRLRLR,,00RRLR当且其它9.加汉宁窗,Quin 校正 411Re()Re(),Re()Re()mmLRmmXXXX212111LRLRLR,,00RRLR当且其它References1.Schoukens,J.,R.Pintelon,H.Van Hamme.The interpolatedfast Fouriertransform:Acomparative study.IEEE Transactions on Instrumentationand Measurement.1992,41(2):名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 6 页 -226-232.2.谢明,丁康.频谱分析的校正方法.振动工程学报.1994,7(2):172-179.3.陈奎孚,王建立,张森文.频谱校正的复比值法.振动工程学报(已投).2007.4.Quinn,B.G.EstimatingfrequencybyinterpolationusingFouriercoefficients.IEEETransactions on Signal Processing.1994,42(5):1264-1268.%=这是调用调试=DT=1;N=1024;PHI=pi/3;Ampl=1;CiR=11.9;%cycles in recordFreq=CiR/(DT*N);%frequencyTV=0:N-1;DatVec=Ampl*cos(Freq*TV*2*pi+PHI);FV=fft(DatVec);figuresubplot(2,1,1);plot(TV,DatVec);subplot(2,1,2);plot(abs(FV(1:round(N/2.56);gridonMV,MI=max(abs(FV);%加矩形窗的解析校正-1FreqShift=SpecCorr(FV,MI,N,1);%加矩形窗的解析单频模型校正-2FreqShift=SpecCorr(FV,MI,N,2);%加汉宁窗的解析单频模型校正-3HanDat=DatVec.*hanning(N,periodic);FV=fft(HanDat);FreqShift=SpecCorr(FV,MI,N,3);%加矩形窗的解析单频模型校正+复比值法-4FV=fft(DatVec);FreqShift=SpecCorr(FV,MI,N,4);%加汉宁窗的解析单频模型校正+复比值法-5HanDat=DatVec.*hanning(N,periodic);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 6 页 -FV=fft(HanDat);FreqShift=SpecCorr(FV,MI,N,5);%加矩形窗的解析单频模型校正+复比值法+左右平均-6FV=fft(DatVec);FreqShift=SpecCorr(FV,MI,N,6);%加汉宁窗的解析单频模型校正+复比值法+左右平均-7HanDat=DatVec.*hanning(N,periodic);FV=fft(HanDat);FreqShift=SpecCorr(FV,MI,N,7);%加矩形窗的解析单频模型校正+Quinn 算法-8FV=fft(DatVec);FreqShift=SpecCorr(FV,MI,N,8);%加汉宁窗的解析单频模型校正+Quinn 算法-9HanDat=DatVec.*hanning(N,periodic);FV=fft(HanDat);FreqShift=SpecCorr(FV,MI,N,9);=这是子程序=%spectrum correction assemble%the sampling interval is 1 s(or unitary)%Input:SpecVec-Discrte Fourier Spectrum from FFT%PeakIdx-the peakindex,noting the matrix in MatLab start from 1%TL-the length(or the point number)of the FFT%method-correction method%output:PeakShift-the corrected peak shifting from the peak in discrete%spectrumfunction PeakShift=SpecCorr(SpecVec,PeakIdx,TL,method)%picking up the secondhighest spectrum lineif(abs(SpecVec(PeakIdx-1)abs(SpecVec(PeakIdx+1)IP=PeakIdx-1,PeakIdx;ShiftCorr=-1;%shift aligning with the PeakIdxelseIP=PeakIdx,PeakIdx+1;ShiftCorr=0;%shift aligning with the PeakIdxendII=IP(1)-1;%noting that the index of a matrix in MATLABstarts from 1,not zeroif(method=1)%an analyitic solution for rectangular windowU=real(SpecVec(IP);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 6 页 -V=imag(SpecVec(IP);DW=2*pi/TL;KOPT=(sin(II*DW)*(V(2)-V(1)+cos(II*DW)*(U(2)-U(1)/(U(2)-U(1);Z=V.*(KOPT-cos(IP-1)*DW)./(sin(DW*(IP-1)+U;Tmp1=(Z(2)*cos(DW*(II+1)-Z(1)*cos(DW*II)/(Z(2)-Z(1);PeakPos=acos(Tmp1)/DW;PeakShift=PeakPos-(PeakIdx-1);elseif(method=2)%basedon the analytical-single-tone model for rectangular windowPeakShift=abs(SpecVec(IP(2)/(abs(SpecVec(IP(2)+abs(SpecVec(IP(1);PeakShift=PeakShift+ShiftCorr;%shift aligning with the PeakIdxelseif(method=3)%basedon the analytical-single-tone model for Hanning windowPeakShift=(2*abs(SpecVec(IP(2)-abs(SpecVec(IP(1)/(abs(SpecVec(IP(2)+abs(SpecVec(IP(1);PeakShift=PeakShift+ShiftCorr;%shift aligning with the PeakIdxelseif(method=4)%basedon the analytical-single-tone model for rectangular window withcomplex correctionPeakShift=real(SpecVec(IP(2)/(SpecVec(IP(2)-SpecVec(IP(1);PeakShift=PeakShift+ShiftCorr;%shift aligning with the PeakIdxelseif(method=5)%based on the analytical-single-tonemodel for Hanning windowwithcomplex correctionPeakShift=(2*SpecVec(IP(2)+SpecVec(IP(1)/(SpecVec(IP(2)-SpecVec(IP(1);PeakShift=real(PeakShift)+ShiftCorr;%shift aligning with the PeakIdxelseif(method=6)%basedon the analytical-single-tone model for rectangular window withcomplex correction+averagePeakShift=real(SpecVec(IP(2)/(SpecVec(IP(2)-SpecVec(IP(1);MaxPeakShift=PeakShift+ShiftCorr;%shift aligning with the PeakIdxLeftShift=real(SpecVec(PeakIdx)/(SpecVec(PeakIdx)-SpecVec(PeakIdx-1)-1;RightShift=real(SpecVec(PeakIdx+1)/(SpecVec(PeakIdx+1)-SpecVec(PeakIdx);%averagePeakShift=(0.5-MaxPeakShift)*LeftShift+(0.5+MaxPeakShift)*RightShift;elseif(method=7)%based on the analytical-single-tonemodel for Hanning windowwithcomplex correction+average,?PeakShift=(2*SpecVec(IP(2)+SpecVec(IP(1)/(SpecVec(IP(2)-SpecVec(IP(1);MaxPeakShift=real(PeakShift)+ShiftCorr;%shift aligning with the PeakIdxLeftShift=(2*SpecVec(PeakIdx)+SpecVec(PeakIdx-1)/(SpecVec(PeakIdx)-SpecVec(PeakIdx-1)-1;RightShift=(2*SpecVec(PeakIdx+1)+SpecVec(PeakIdx)/(SpecVec(PeakIdx+1)-SpecVec(PeakIdx);名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 6 页 -%averagePeakShift=(0.5-MaxPeakShift)*LeftShift+(0.5+MaxPeakShift)*RightShift;elseif(method=8)%Quinn method for the rectangular windowa1=real(SpecVec(PeakIdx-1)/SpecVec(PeakIdx);%lefta2=real(SpecVec(PeakIdx+1)/SpecVec(PeakIdx);%rightLeftShift=a1/(1-a1);RightShift=-a2/(1-a2);if(LeftShift0&RightShift0)PeakShift=RightShift;elsePeakShift=LeftShift;endelseif(method=9)%Quinn method for the Hanning windowa1=real(SpecVec(PeakIdx-1)/SpecVec(PeakIdx);%lefta2=real(SpecVec(PeakIdx+1)/SpecVec(PeakIdx);%rightLeftShift=(2*a1+1)/(1-a1);RightShift=-(2*a2+1)/(1-a2);if(LeftShift0&RightShift0)PeakShift=RightShift;elsePeakShift=LeftShift;endendend名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 6 页 -