马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
王老师,您好,希望你可以看到我的帖子,我刚开始学习apFFT,出现了点问题,就是如何实现实测数据的apFFT,我们知道apFFT序列中
t=-N+1:N-1,而实测数据t从0开始,如果我们取序列中2N个点,第N个点为中心,相当与仿真信号中t=0的位置,不知到我的理解是否正确。
编程如下:
clc
clear
N=1024;
Fs = 400; % Sampling frequency
T = 1/Fs; % Sample time
L=2*N; % Length of signal
f = Fs/2*linspace(0,1,N/2+1);
t = (0:L-1)*T;
y=cos(2*pi*t*20+20*pi/180)+cos(2*pi*t*50+50*pi/180)+cos(2*pi*t*70+70*pi/180);
win=hanning(N)';
win1=win/sum(win);
x1=y(N:2*N-1);
y1=x1.*win1;
y1_fft=fft(y1,N);
a1=abs(y1_fft);
p1=mod(phase(y1_fft)*180/pi,360); %FFT
winn=conv(win,win);
win2=winn/sum(winn);
x2=y(1:2*N-1);
y2=x2.*win2;
y2=y2(N:end)+[0 y2(1:N-1)];
y2_fft=fft(y2,N);
a2=abs(y2_fft);
p2=mod(phase(y2_fft)*180/pi,360);
ee=mod((p1-p2)/180/(1-1/N),1);
aa=(a1.^2)./(a2*2);
subplot(211);plot(f,a2(1:N/2+1));
subplot(212);stem(f,p2(1:N/2+1))
数据结果,频率正确,而相位信号出错,见图1
如果将时间t改为:t = (-N+1:N+1)*T,则频率和相位均正确,见图2;
所以我就想知道如果是实测数据,该如何实现apFFT? |