資源簡介
通過時移,進行前后兩次FFT分析,利用離散頻譜對應峰值譜線的相位差以求出頻率和相位校正量。
代碼片段和文件信息
%相位差校正法
clear?all
close?all
clc
L=100;???????????????????????????????????%延遲點數
N=1024;
S=L+N;
n=0:S-1;
n1=0:N-1;
fs=1024;
dt=1/fs;
x=cos(2*pi*200.4*n*dt+80*pi/180);?????????%此處在時域取L+N點
wn=1/2-1/2*cos(2*pi*n1/N);????????????????%漢寧窗時域表達式???
xh=x(1:N).*wn;
%%
Xk1=FFT(xhN);?????????????????????????????%對前N點做FFT,即0到N-1點
y=abs(Xk1);????????????????????????????????%取幅值
subplot(321)
plot((0:N/2-1)*fs/N4*y(1:N/2)/N)grid?on??
xlabel(‘頻率‘)ylabel(‘幅值‘)title(‘平移前幅值圖‘)
subplot(322)
plot((0:N/2-1)*fs/Nangle(Xk1(1:N/2))*180/pi)grid?on???
xlabel(‘頻率‘)ylabel(‘相位‘)title(‘平移前相位圖‘)
%%
wn=1/2-1/2*cos(2*pi*n1/N);?????????????%漢寧窗時域表達式???
xh1=x(L+1:S).*wn;
Xk2=FFT(xh1N);????????????????????????%對后N點做FFT運算,即第L點到L+N-1
y=abs(Xk2)/N;
[y1index]=max(y);
k=index-1;
subplot(323)
plot((L-1:L+N/2-2)*fs/N4*y(L:L+N/2-1))grid?on
xlabel(‘頻率‘)ylabel(‘幅值‘)title(‘平移后幅值圖‘)
subplot(324)
plot((L-1:L+N/2-2)*fs/N180*(angle(Xk2(L:L+N/2-1)))/pi)grid?on
xlabel(‘頻率‘)ylabel(‘相位‘)title(‘平移后相位圖‘)
%%
%校正
deltaphi=180*(angle(Xk2(201)))/pi-angle(Xk1(201))*180/pi;
phase1=deltaphi/180*pi;
phase2=2*pi*200*100/1024;
delta=mod(phase1-phase22*pi);???????%和2pi取余
%將sigma調整到(-pipi)之間
if?delta<-pi
????delta1=delt+2*pi;
elseif?delta>pi
????delta1=delt-2*pi;
else?delta1=delta;
end
deltaf=delta1*1024/(2*pi*100);
f0=(k+deltaf)*fs/N;
A=2*y(index)/(sinc(deltaf)/(2*(1-deltaf^2)));%漢寧窗的頻譜函數化成sinc形函數
theta=(angle(Xk1(201)))*180/pi-deltaf*180;
%%
%校正后的圖形
subplot(325)
stem(f0A)grid?on
xlabel(‘校正后頻率‘)ylabel(‘幅值‘)title(‘校正后幅值圖‘)
subplot(326)
stem(f0theta)grid?on
xlabel(‘校正后頻率‘)ylabel(‘相位‘)title(‘校正后相位圖‘)
%%
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1813??2011-08-22?15:56??phasehaning.m
-----------?---------??----------?-----??----
?????????????????1813????????????????????1
評論
共有 條評論