Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1330916
  • 博文数量: 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

2011-10-20 16:51:28

一个偶对称的连续波,如何用FFT做频谱分析,用正弦信号做了个例子,不论任何连续信号,都可以仿照这个例子进行频谱分析。
  1. %==========================================================================
  2. %Name: sinfft.m
  3. %Desc: 使用FFT求y=sin(2*pi*10*t)的频谱,抽样频率为40hz(大于信号最高频率2倍),
  4. % 抽样时间点从-t0~t0;FFT点数分别为32和1024,用来比较不同N点的频谱图变化。
  5. % 对每一个N,用两种方式生成抽样值,并分别画图
  6. %Parameter:
  7. %Return:
  8. %Author: yoyoba(stuyou@126.com)
  9. %Date: 2011-10-20
  10. %Modify: 2011-10-20
  11. % %========================================================================
  12. fs=40;
  13. N=[32,1024];
  14. for r=1:2
  15. %方式1:(FFT的数据位于主值区间[0,N-1])。由于采样时间从-t0~t0,得到的采样数
  16. %据也是从-t0~t0,如何变换到主值区间?注意偶对称序列是如何把采样数据变换到主
  17. %值区间的。画频谱图时,注意频率的生成方法,得到的频谱图的横轴频率从负到正。
  18. np=floor(0:(N(r)-1)/2);
  19. nn=floor(-(N(r)-1)/2:-1/2);
  20. n=[np,nn];
  21. t=n/fs;
  22. y=sin(2*pi*10*t);
  23. Y=fftshift(fft(y,N(r)));
  24. k=floor(-(N(r)-1)/2:(N(r)-1)/2);
  25. f=k*fs/N(r);
  26. subplot(2,2,2*r-1);
  27. plot(f,abs(Y));
  28. title(strcat('figure',num2str(2*r-1),' N=',num2str(N(r))));
  29. %方式2:采样时间从-t0~t0,得到的采样数据直接作为FFT的数据使用。画频谱图时,
  30. %注意频率的生成方法,得到的频谱图的横轴频率从0开始。
  31. n=[nn,np];
  32. t=n/fs;
  33. y=sin(2*pi*10*t);
  34. Y=fftshift(fft(y,N(r)));
  35. k=0:N(r)-1;
  36. f=k*fs/N(r);
  37. subplot(2,2,2*r);
  38. plot(f,abs(Y));
  39. title(strcat('figure',num2str(2*r),' N=',num2str(N(r))));
  40. end
阅读(12548) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~