MATLAB之傅里叶变换,快速傅里叶变换FFT

谁践踏了优雅 2022-04-24 03:52 716阅读 0赞

文章目录

  • 傅里叶变换及傅里叶逆变换定义
    • 窗函数/矩形脉冲信号的傅里叶变换
  • 基于MATLAB的快速傅里叶变换FFT

傅里叶变换及傅里叶逆变换定义

能从时域的非周期连续信号转化到频域非周期连续信号。
在这里插入图片描述

窗函数/矩形脉冲信号的傅里叶变换

在这里插入图片描述
在这里插入图片描述
结论:

  1. 随着脉冲宽度τ的减小,主叶变得更宽,而且更多的能量被移到更高的频率。则反之。
  2. 当信号脉冲在时间上扩展时,它的变换在频率上压缩。则反之。

基于MATLAB的快速傅里叶变换FFT

通过蝶形算法衍生的FFT暂不推导,下面直接给出代码。

  1. % 功能:简易的快速傅里叶变换FFT
  2. % 注意:整周期采样的问题,非整周期采样会引起频谱泄露
  3. % NFFT/Fs*f1是整数时,称整周期采样
  4. % 编辑者:lily
  5. % 日期:2019,4,15
  6. clear;
  7. clc;
  8. close all;
  9. % ======================= input signal ==========================
  10. f1 = 30;
  11. fai1 = pi/3;
  12. Fs = 2^9;
  13. T =1; % T = N/Fs
  14. t = 0:1/Fs:T-1/Fs;
  15. N = length(t);
  16. NFFT = 2^nextpow2(N);%nextpow2(N),靠的最近的2的指数
  17. x = sin(2*pi*f1*t);
  18. % ======================= fft ==================================
  19. deltaF = 1/T; % deltaF = dFs/(N-1);%如果是表格或mat文件,推荐用这一种
  20. vecf = (0:N-1)*deltaF;
  21. % vecf = linspace(0,Fs,N);
  22. % linspace(x1,x2,n) % 生成 n 个点。这些点的间距为 (x2-x1)/(n-1)。
  23. % 如果数据x是奇数,f=vecf
  24. tic;
  25. xk = 2*fft(x,NFFT)/N;
  26. toc;
  27. Ampli = abs(xk);
  28. phase = unwrap(angle(xk));
  29. % =========================== figure ====================================
  30. figure;
  31. subplot(3,1,1);plot(t,x);title('信号')
  32. subplot(3,1,2);plot(vecf,Ampli);title('FFT双边谱')
  33. subplot(3,1,3);plot(vecf(1:Fs/2+1),Ampli(1:Fs/2+1));title('FFT单边谱')

发表评论

表情:
评论列表 (有 0 条评论,716人围观)

还没有评论,来说两句吧...

相关阅读

    相关 变换

    > 傅立叶变换,表示能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅立叶变换具有多种不同的变体形式,如连续傅立叶变换

    相关 快速变换 FFT 学习小记

    今天终于考完《信号与系统分析》。据学长说这门课一个寝室能有一个通过的。。。 我唯一感兴趣的一部分:“离散傅里叶变换与快速傅里叶变换”老师表示不讲不考。。。。 趁着还没把课本

    相关 变换

    作 者:韩 昊 知 乎: Heinrich 微 博: @花生油工人 知乎专栏:与时间无关的故事   谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶