📄 spectrumcorrect.m
字号:
%离散频谱比值校正法
%
%xf为FFT后的复数谱
%CorrectNum为校正的谱线条数,即校正最大的CorrectNum条
%WindowType为加窗类型,1为矩形窗,2为Hanning窗
%
%SpectrumCorrect.m
function XfCorrect=SpectrumCorrect(xf,CorrectNum,WindowType)
XfCorrect=zeros(CorrectNum,3);
for i=1:CorrectNum
A=abs(xf);
[Amax,index]=max(A);
phmax=angle(xf(index));
%比值法
%加矩形窗
if (WindowType==1)
indsecL=A(index-1)>A(index+1);
df=indsecL.*A(index-1)./(Amax+A(index-1))-(1-indsecL).*A(index+1)./(Amax+A(index+1));
XfCorrect(i,1)=index-1-df;
XfCorrect(i,2)=Amax/sinc(df);
XfCorrect(i,3)=(phmax+pi*df)*180/pi;
xf(index-2:index+2)=zeros(1,5);
end
%比值法
%加Hanning窗
if (WindowType==2)
indsecL=A(index-1)>A(index+1);
df=indsecL.*(2*A(index-1)-Amax)./(Amax+A(index-1))-(1-indsecL).*(2*A(index+1)-Amax)./(Amax+A(index+1));
XfCorrect(i,1)=index-1-df;
XfCorrect(i,2)=(1-df^2)*Amax/sinc(df);
XfCorrect(i,3)=(phmax+pi*df)*180/pi;
xf(index-4:index+4)=zeros(1,9);
end
XfCorrect(i,3)=mod(XfCorrect(i,3),360);
XfCorrect(i,3)=XfCorrect(i,3)-(XfCorrect(i,3)>180)*360;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -