码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Fast Fourier transform快速傅里叶变换


    0 傅里叶分析和滤波

    资料来源:https://ww2.mathworks.cn/help/matlab/fourier-analysis-and-filtering.html?s_tid=CRUX_lftnav

    变换和滤波器是用于处理和分析离散数据的工具,常用在信号处理应用和计算数学中。当数据表示为时间或空间的函数时,傅里叶变换会将数据分解为频率分量。
    在这里插入图片描述
    图片来源:https://ww2.mathworks.cn/help/matlab/fourier-analysis-and-filtering.html?s_tid=CRUX_lftnav
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1 快速傅里叶变换简单介绍

    (1)傅里叶变换
    傅里叶分析将信号从其原始域(通常是时间或空间)转换为频域的表示形式,反之亦然。

    傅里叶变换物理意义:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。

    傅立叶变换将原来难以处理的时域信号转换成了易于分析的频域信号(信号的频谱),可以利用一些工具对这些频域信号进行处理、加工。最后还可以利用傅立叶反变换将这些频域信号转换成时域信号。

    数学角度:傅里叶变换是一种特殊的积分变换。它能将满足一定条件的某个函数表示成正弦基函数的线性组合或者积分。

    为什么要进行傅里叶变换:https://zhuanlan.zhihu.com/p/37057915
    简单理解是将时域的信号转换到频域的正弦信号,更有利于处理信号。

    (2)快速傅里叶变换
    快速傅氏变换(FFT)是离散傅氏变换(DFT)的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

    快速傅里叶变换是离散傅里叶变换的一种快速实现方式,快速傅里叶变换可用于多项式乘法、大数乘法、卷积等操作。

    参考资料:https://blog.csdn.net/dan1900/article/details/39694075

    2 快速傅里叶变换实现方法MATLAB

    参考资料:https://blog.csdn.net/qq_34840129/article/details/85339999
    matlab fft函数介绍:https://ww2.mathworks.cn/help/matlab/ref/fft.html
    实例:将高斯脉冲从时域转换成频域。
    第一步:定义信号参数和高斯脉冲 X

    Fs = 100;           % Sampling frequency
    t = -0.5:1/Fs:0.5;  % Time vector 
    L = length(t);      % Signal length
    
    X = 1/(4*sqrt(2*pi*0.01))*(exp(-t.^2/(2*0.01)));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    第二步:在时域中绘制脉冲

    plot(t,X)
    title('Gaussian Pulse in Time Domain')
    xlabel('Time (t)')
    ylabel('X(t)')
    
    • 1
    • 2
    • 3
    • 4

    显示结果:
    在这里插入图片描述
    第三步:zero-padding
    要使用 fft 将信号转换为频域,首先从原始信号长度确定是下一个 2 次幂的新输入长度。这将用尾随零填充信号 X 以改善 fft 的性能。

    n = 2^nextpow2(L);
    Y = fft(X,n);
    f = Fs*(0:(n/2))/n;
    P = abs(Y/n).^2;
    
    plot(f,P(1:n/2+1)) 
    title('Gaussian Pulse in Frequency Domain')
    xlabel('Frequency (f)')
    ylabel('|P(f)|^2')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    3 快速傅里叶逆变换IFFT

    参考资料:https://ww2.mathworks.cn/help/matlab/ref/ifft.html
    快速傅里叶逆变换IFFT可以实现时空采样数据与频率采样数据间的傅里叶变换,即频率采样数据转换成时空采样数据。

    数学角度:向量的逆变换

    X = [1 2 3 4 5];
    Y = fft(X)
    
    • 1
    • 2

    在这里插入图片描述
    快速傅里叶逆变换IFFT:ifft(Y)
    在这里插入图片描述

  • 相关阅读:
    Python文件:概念、作用、存储方式、文件类型、基本操作函数/方法
    使用正则表达式在中英文之间添加空格
    mac下vue-cli从2.9.6升级到最新版本
    离线数仓建设
    【Python】Python 将一个文件夹备份到一个 ZIP 文件
    榜样力量激发青少年英语学习新活力
    Java中的SPI原理浅谈
    LLM(大语言模型)「Agent」开发教程-LangChain(三)
    Cyclone DDS(初识)
    Java 图片验证码需求分析
  • 原文地址:https://blog.csdn.net/qq_32649321/article/details/127790542
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号