Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1219109
  • 博文数量: 124
  • 博客积分: 5772
  • 博客等级: 大校
  • 技术积分: 1647
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-27 10:39
文章分类

全部博文(124)

文章存档

2020年(1)

2019年(1)

2018年(5)

2017年(2)

2016年(17)

2015年(3)

2014年(7)

2013年(11)

2012年(13)

2011年(30)

2010年(34)

分类: Windows平台

2013-07-01 15:56:17

前几天,一位好友说用FFT写了一段程序,来计算啁啾高斯脉冲的相位谱,总是得不到正确的结果。后来查找资料发现,用普通FFT算法求相位谱,可能会遇到所得相位谱与实际相位谱差别很大的情况。可以采用“全相位FFT”方法来计算相位谱,这种方法的计算结果比较接近信号的实际相位谱。
啁啾高斯脉冲的时域和频率表达式如图1所示。

               图1 啁啾高斯脉冲的时域和频域表达式,C为啁啾量

使用“全相位FFT”方法求啁啾高斯脉冲相位谱的代码如下(MATLAB):

  1. %==========================================================================
  2. %Name: apFFT_chirp_Gauss.m,
  3. %Desc: 计算啁啾高斯脉冲的幅度谱和相位谱,使用全相位FFT算法
  4. %Parameter:
  5. %Return:
  6. %Author: yoyoba(stuyou@126.com)
  7. %Date: 2013-06-29
  8. %Modify: 2013-06-29
  9. %==========================================================================
  10. close all;
  11. clc;
  12. clear all;
  13. T0=1e-12; %高斯脉冲时间宽度1ps
  14. N=2^11;     %采样点2048
  15. Ts=100*T0/N; %时域取样间隔,时间窗口宽度为100*T0,
  16. n=-N+1:2*N-1;
  17. t=n*Ts; %取样时刻
  18. C=2; %简单一些,直接给出初始啁啾量
  19. g=exp(-0.5*(1+1i*C)*(t/T0).^2); %带有啁啾的高斯脉冲序列,原始脉冲强度默认为1
  20. k=floor(-(N-1)/2:(N-1)/2);
  21. D=1/(N*Ts); %频率分辨率
  22. f=k*D; %频率坐标
  23. %以下代码作用:为了使用全相位FFT算法,需对高斯脉冲序列进行预处理
  24. %=============全相位FFT预处理开始================
  25. win=hanning(N)';
  26. win1=hanning(N)';
  27. win2=conv(win,win1);
  28. win2=win2/sum(win2);
  29. w=pi*2;
  30. g1=g(1:2*N-1);
  31. y1=g1.*win2;
  32. y1a=y1(N:end) + [0 y1(1:N-1)];
  33. %=============全相位FFT预处理结束================
  34. apFFT_g=fftshift(fft(y1a,N)); %FFT变换
  35. figure;
  36. plot(t*1e+12,abs(g).^2/max(abs(g).^2),'linewidth',2);
  37. xlabel('time(ps)');
  38. ylabel('Intensity(a.u.)');
  39. axis([-3,3,0,1]);
  40. title('Time-Intensity');
  41. figure;
  42. plot(t*1e+12,phase(g),'linewidth',2);
  43. xlabel('time(ps)');
  44. ylabel('phase(rad)');
  45. axis([-100,100,-200,700]);
  46. title('Time-Phase');
  47. figure;
  48. plot(f*1e-12,abs(apFFT_g).^2/max(abs(apFFT_g).^2),'linewidth',2);
  49. xlabel('frequency(THz)');
  50. ylabel('Intensity(a.u.)');
  51. axis([-2,2,0,1]);
  52. title('Frequency-Intensity');
  53. figure;
  54. plot(f*1e-12,phase(apFFT_g),'linewidth',2);
  55. xlabel('frequency(THz)');
  56. ylabel('phase(rad)');
  57. axis([-5,5,-70,10]);
  58. title('Frequency-Phase');
运行结果如下:图2~5分别表示时域强度谱、时域相位谱、频域强度谱、频域相位谱。

                  图2 时域强度谱

                图3 时域相位谱

               图4 频域强度谱

               图5 频域相位谱

apFFT_chirp_Gauss.rar
阅读(11177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~