|
信号是第1点相位350.04度的正弦波
楼主, 把你的数据文件第1列全部去掉, 只剩下第2列构成一个phase.txt文件, 即可输入
用FFT和apFFT组合校正法校正, 信号是一个含直流分量0.076975的余弦波
信号频率 3.1984 (相对N=128)
信号振幅 0.55102
信号第1点相位 260.04 度(校正值为余弦波相位, 相对正弦波是350.04)
对照图1a输入信号波形, 原信号一开始有直流分量, 去掉直流分量, 正弦波信号振幅0.55102和信号第1点相位350.04 度符合图示信号
close all;clc;clear all;
N=128;
yy=load('phase.txt');
y=yy'-mean(yy);
y=y(1:2*N-1);%2N-1个输入数据
y1 = y(N:2*N-1);%后N个输入数据
win = hanning(N)';;
win1 = win/sum(win);%窗归1
y11= y1.*win1;
y11_fft = fft(y11,N);
a1 = abs(y11_fft);%FFT振幅谱
p1 = mod(phase(y11_fft)*180/pi,360);;%FFT相位谱
y2 = y(1:2*N-1);%2N-1个输入数据
win = hanning(N)';;
winn = conv(win,win);%apFFT须要卷积窗
win2 = winn/sum(winn);%窗归1
y22= y2.*win2;
y222=y22(N:end)+[0 y22(1:N-1)];%构成长N的apFFT输入数据
y2_fft = fft(y222,N);;
a2 = abs(y2_fft);%apFFT振幅谱
p2=mod( phase(y2_fft)*180/pi,360);%apFFT相位谱
ee=(p1-p2)/180/(1-1/N);%频率偏离校正值
aa=(a1.^2)./a2*2;%振幅校正值
subplot(5,1,1);stem(y,'.');title('input signal(1;255)');ylim([-1,1]);xlim([0 N*3]);grid
subplot(5,1,2),stem(a2,'.');title('apFFTamplitude spectrum');ylim([0,0.5]);xlim([0 N/2]);grid
subplot(5,1,3),stem(p2,'.');title('128点apFFT phase spectrum');ylim([0,400]);xlim([0 N/2]);grid
subplot(5,1,4);stem(ee,'.');title('frequency correction spectrum');ylim([-1,1]);xlim([0 N/2]);grid
subplot(5,1,5);stem(aa,'.');title('amplitude correction spectrum');ylim([0,1]);xlim([0 N/2]);grid
disp('频率校正值')
fff=3+ee(4)
disp('振幅校正值')
aaa=aa(4)
disp('初相位校正值')%由128点相位计算第1点相位
ppp=p2(4)-mod(fff*127/128*360,360)
[ 本帖最后由 zhwang554 于 2008-7-6 17:47 编辑 ] |
|