声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1388|回复: 1

[FFT] 全相位fft能求初始信号相位吗

[复制链接]
发表于 2013-10-28 21:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
看全相位fft的原理,好像只能求一段信号的中间点的相位。
以下是一段求中间点,即t=0处的相位值的仿真程序。
那如果在工程应用中,很多时候都是要求信号初始点的相位。那全相位fft是否能胜任?
即将t改为 t=(0:2*N-2)/fs; y改为实际采集到的信号,求t=0时刻的信号相位。
  1. close all;clc;clear all;
  2. N=1024;
  3. fs=2048;
  4. w=2*pi;
  5. % t=(0:2*N-2)/fs;
  6. t=(-N+1:N-1)/fs;
  7. y=1.0*exp(j*(w*t*49.1+50.0*pi/180))+0.8*exp(j*(w*t*149.2+100*pi/180))+0.6*exp(j*(w*t*249.3+150*pi/180))+0.4*exp(j*(w*t*349.4+200*pi/180))+0.2*exp(j*(w*t*449.5+250*pi/180));
  8. y1 = y(N:end);
  9. win =hanning(N)';;
  10. win1 = win/sum(win);
  11. y11= y1.*win1;
  12. y11_fft = fft(y11,N);
  13. a1 = abs(y11_fft);
  14. p1 = mod(phase(y11_fft)*180/pi,360);
  15. y2 = y(1:2*N-1);
  16. win =hanning(N)';;
  17. winn =conv(win,win);%apFFT须要卷积窗
  18. win2 = winn/sum(winn);
  19. y22= y2.*win2;
  20. y222=y22(N:end)+[0 y22(1:N-1)];%构成长N的apFFT输入数据
  21. y2_fft = fft(y222,N);
  22. a2 = abs(y2_fft);
  23. p2=mod( phase(y2_fft)*180/pi,360);
  24. ee=mod((p1-p2)/180/(1-1/N),1);
  25. aa=(a1.^2)./a2;
  26. subplot(4,1,1),stem(a2,'.');title('apFFT振幅谱');ylim([0,1]);xlim([0 N/2]);grid
  27. subplot(4,1,2),stem(p2,'.');title('初相位校正谱');ylim([0,400]);xlim([0 N/2]);grid
  28. subplot(4,1,3);stem(ee,'.');title('频率校正谱');ylim([-1,1]);xlim([0 N/2]);grid
  29. subplot(4,1,4);stem(aa,'.');title('振幅校正谱');ylim([0,1.5]);xlim([0 N/2]);grid
  30. r=round([49.1149.2249.3349.4449.5]*N/fs)
  31. disp('相位校正值')
  32. p2(r+1)
  33. disp('频率校正值')
  34. (ee(r+1)+floor([49.1149.2249.3349.4449.5]*N/fs))*fs/N
  35. disp('振幅校正值')
  36. aa(r+1)
复制代码


回复
分享到:

使用道具 举报

发表于 2013-10-29 00:07 | 显示全部楼层
把参考文献列出来看看
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-11 00:40 , Processed in 0.075997 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表