当前位置: 首页 > ai >正文

[学习] 深入理解傅里叶变换:从时域到频域的桥梁

深入理解傅里叶变换:从时域到频域的桥梁

文章目录

  • 深入理解傅里叶变换:从时域到频域的桥梁
    • 1. 核心思想:从时域到频域
    • 2. 为什么需要傅里叶变换?
    • 3. 数学定义
      • 3.1 连续傅里叶变换(CFT)
      • 3.2 傅里叶级数(FS)
      • 3.3 离散时间傅里叶变换(DTFT)
      • 3.4 离散傅里叶变换(DFT)
    • 4. 关键概念与特性
      • 4.1 频谱
      • 4.2 正交性与基函数
      • 4.3 狄利克雷条件
      • 4.4 吉布斯现象
      • 4.5 卷积定理
      • 4.6 帕塞瓦尔定理(能量守恒)
      • 4.7 对称性
      • 4.8 时频分辨率不确定性原理
    • 5. 使用示例
      • 5.1 信号降噪处理
      • 5.1 信号降噪处理
    • 6. 总结

傅里叶变换不仅仅是一个数学工具,更是一种强大的思维方式,它为我们理解信号、系统乃至世界提供了全新的视角。通过将复杂信号分解为不同频率的正弦波或复指数函数的组合,傅里叶变换揭示了信号的本质结构,成为众多科学与工程领域的核心基础。


1. 核心思想:从时域到频域

想象你在听一段音乐:

  • 时域视角:你看到的是声音振幅随时间变化的波形图(横轴是时间,纵轴是振幅)。它告诉你某个特定时刻声音有多“响”。
  • 频域视角:你想知道这段音乐是由哪些不同频率(音高)的音符组成的,以及每个音符的强度(响度)有多大。这就是频域(横轴是频率,纵轴是强度/能量)。

傅里叶变换的精髓在于:它可以将任何复杂的信号(函数)分解成一系列不同频率、不同幅度、不同相位的正弦波(或复指数)的组合。就像把一束白光分解成七彩光谱一样。

时频域转换演示:

import numpy as np
import matplotlib.pyplot as plt# 创建复合信号
t = np.linspace(0, 1, 1000, endpoint=False)
signal = (np.sin(2 * np.pi * 5 * t) + (0.5 * np.sin(2 * np.pi * 20 * t))# 可视化时域信号
plt.figure(figsize=(12, 6))
plt.subplot(211)
plt.plot(t, signal)
plt.title('时域信号 (5Hz + 20Hz)')
plt.xlabel('时间 (s)')
plt.ylabel('振幅')# 傅里叶变换
fft_result = np.fft.fft(signal)
freqs = np.fft.fftfreq(len(t), t[1]-t[0])# 可视化频域
plt.subplot(212)
plt.plot(freqs[:len(freqs)//2], np.abs(fft_result[:len(freqs)//2]))
plt.title('频域表示')
plt.xlabel('频率 (Hz)')
plt.ylabel('振幅')
plt.tight_layout()
plt.show()

演示效果:通过FFT可以实现时域到频域的转换
在这里插入图片描述


2. 为什么需要傅里叶变换?

傅里叶变换之所以如此重要,是因为它在多个方面提供了独特的价值:

  1. 揭示隐藏结构:很多信号在时域中看起来杂乱无章,但在频域中,其组成频率及其强度一目了然。例如,识别音频中的特定乐器、检测心电图中的异常心跳频率。
  2. 简化分析:在频域中对信号进行滤波、压缩、特征提取等操作往往比在时域中更简单直观。例如,设计一个低通滤波器去除高频噪声,只需在频域中衰减高频分量。
  3. 理解系统特性:线性时不变系统对输入信号的响应,在频域中表现为简单的乘法(系统频率响应函数乘以输入频谱),这比在时域进行卷积运算要容易得多。
  4. 解决微分方程:傅里叶变换可以将某些微分方程转化为频域中的代数方程,大大简化求解过程。
  5. 广泛的应用:信号处理(音频、图像、视频)、通信系统、量子力学、光学、热传导、结构分析、金融数据分析等众多领域。

3. 数学定义

傅里叶变换有多种形式,适用于不同类型的信号:

3.1 连续傅里叶变换(CFT)

  • 适用对象:连续时间、非周期信号。
  • 正变换(时域 → 频域)
    F(ω)=∫−∞+∞f(t)⋅e−iωtdtF(\omega) = \int_{-\infty}^{+\infty} f(t) \cdot e^{-i\omega t} dt F(ω)=+f(t)etdt
  • 逆变换(频域 → 时域)
    f(t)=12π∫−∞+∞F(ω)⋅eiωtdωf(t) = \frac{1}{2\pi} \int_{-\infty}^{+\infty} F(\omega) \cdot e^{i\omega t} d\omega f(t)=2π1+F(ω)etdω
  • 解释
    • f(t)f(t)f(t):时域信号。
    • F(ω)F(\omega)F(ω):频域表示,通常是复数。
    • ω=2πf\omega = 2\pi fω=2πf 是角频率。
    • e−iωt=cos⁡(ωt)−isin⁡(ωt)e^{-i\omega t} = \cos(\omega t) - i\sin(\omega t)et=cos(ωt)isin(ωt):复指数函数,是傅里叶变换的基函数。
    • 积分过程:正变换本质上是将原始信号 f(t)f(t)f(t) 与频率为 ω\omegaω 的复指数基函数进行内积。结果 F(ω)F(\omega)F(ω) 的模 ∣F(ω)∣|F(\omega)|F(ω) 表示频率 ω\omegaω 成分的强度,其辐角 arg⁡(F(ω))\arg(F(\omega))arg(F(ω)) 表示相位偏移。
    • 逆变换:将所有频率分量叠加起来,就能重构原始信号。

3.2 傅里叶级数(FS)

  • 适用对象:连续时间、周期信号。
  • 复指数形式
    f(t)=∑n=−∞+∞cn⋅einω0tf(t) = \sum_{n=-\infty}^{+\infty} c_n \cdot e^{i n \omega_0 t} f(t)=n=+cneinω0t
    其中 ω0=2πT\omega_0 = \frac{2\pi}{T}ω0=T2π 是基波角频率。
  • 系数计算
    cn=1T∫0Tf(t)⋅e−inω0tdtc_n = \frac{1}{T} \int_{0}^{T} f(t) \cdot e^{-i n \omega_0 t} dt cn=T10Tf(t)einω0tdt
  • 解释cnc_ncn 是频率为 nω0n\omega_0nω0 的分量对应的复数系数,其模 ∣cn∣|c_n|cn 表示振幅,辐角 arg⁡(cn)\arg(c_n)arg(cn) 表示相位。频谱是离散的线谱。

3.3 离散时间傅里叶变换(DTFT)

  • 适用对象:离散时间、非周期信号。
  • 正变换
    X(eiω)=∑n=−∞+∞x[n]⋅e−iωnX(e^{i\omega}) = \sum_{n=-\infty}^{+\infty} x[n] \cdot e^{-i\omega n} X(e)=n=+x[n]eiωn
  • 解释x[n]x[n]x[n] 是离散时间序列,X(eiω)X(e^{i\omega})X(e) 是其频谱。它是角频率 ω\omegaω 的连续函数,但以 2π2\pi2π 为周期。频率范围通常取 [−π,π][-\pi, \pi][π,π][0,2π][0, 2\pi][0,2π]

3.4 离散傅里叶变换(DFT)

  • 适用对象:有限长的离散时间信号。
  • 正变换
    X[k]=∑n=0N−1x[n]⋅e−i2πNkn,k=0,1,…,N−1X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-i \frac{2\pi}{N} k n}, \quad k = 0, 1, \ldots, N-1 X[k]=n=0N1x[n]eiN2πkn,k=0,1,,N1
  • 逆变换
    x[n]=1N∑k=0N−1X[k]⋅ei2πNkn,n=0,1,…,N−1x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k] \cdot e^{i \frac{2\pi}{N} k n}, \quad n = 0, 1, \ldots, N-1 x[n]=N1k=0N1X[k]eiN2πkn,n=0,1,,N1
  • 解释
    • x[n]x[n]x[n]:长度为 NNN 的时域离散序列。
    • X[k]X[k]X[k]:长度为 NNN 的频域离散序列。
    • e−i2πNkne^{-i \frac{2\pi}{N} k n}eiN2πkn:DFT 的基函数。
    • kkk:频域索引,对应频率 fk=k⋅fsNf_k = k \cdot \frac{f_s}{N}fk=kNfs (Hz),其中 fsf_sfs 是采样频率。
  • 关键点
    • DFT 将有限长序列视为一个周期信号的一个周期。
    • X[k]X[k]X[k] 是 DTFT 在频率点 ωk=2πkN\omega_k = \frac{2\pi k}{N}ωk=N2πk 上的采样。
    • 快速傅里叶变换(FFT)是一种高效的 DFT 算法(O(Nlog⁡N)O(N \log N)O(NlogN)),使得傅里叶分析在实时应用中成为可能。

4. 关键概念与特性

4.1 频谱

  • 幅度谱∣F(ω)∣|F(\omega)|F(ω)∣X[k]∣|X[k]|X[k],表示各频率分量的强度。
  • 相位谱arg⁡(F(ω))\arg(F(\omega))arg(F(ω))arg⁡(X[k])\arg(X[k])arg(X[k]),表示各频率分量的相位偏移。相位信息对信号重构至关重要,但幅度谱通常更直观。

4.2 正交性与基函数

不同频率的复指数函数 eiωte^{i\omega t}et 在无穷区间上是正交的(内积为0)。这种正交性保证了信号可以唯一地分解成这些基函数的线性组合。

4.3 狄利克雷条件

一个函数能够进行傅里叶变换(或展开为傅里叶级数)需满足以下条件:

  • 在任意有限区间内只有有限个第一类间断点。
  • 在任意有限区间内只有有限个极值点。
  • 绝对可积:∫∣f(t)∣dt<∞\int |f(t)| dt < \inftyf(t)dt<

绝大多数物理信号都满足这些条件。

4.4 吉布斯现象

当用有限项傅里叶级数逼近具有间断点的信号(如方波)时,在间断点附近会出现振荡和过冲,且不随项数增加而消失,只是振荡区域变窄。这是傅里叶分析的一个固有特性。

4.5 卷积定理

这是傅里叶变换最重要的性质之一:

  • 时域卷积 ↔ 频域乘积f(t)∗g(t)↔F(ω)⋅G(ω)f(t) * g(t) \leftrightarrow F(\omega) \cdot G(\omega)f(t)g(t)F(ω)G(ω)
  • 时域乘积 ↔ 频域卷积
    • 连续:f(t)⋅g(t)↔12πF(ω)∗G(ω)f(t) \cdot g(t) \leftrightarrow \frac{1}{2\pi} F(\omega) * G(\omega)f(t)g(t)2π1F(ω)G(ω)
    • 离散时间:x[n]⋅y[n]↔X(eiω)∗Y(eiω)x[n] \cdot y[n] \leftrightarrow X(e^{i\omega}) * Y(e^{i\omega})x[n]y[n]X(e)Y(e)
    • DFT:x[n]⋅y[n]↔1NX[k]∗Y[k]x[n] \cdot y[n] \leftrightarrow \frac{1}{N} X[k] * Y[k]x[n]y[n]N1X[k]Y[k](循环卷积)

4.6 帕塞瓦尔定理(能量守恒)

信号在时域的总能量等于其在频域的总能量:

  • 连续:∫∣f(t)∣2dt=12π∫∣F(ω)∣2dω\int |f(t)|^2 dt = \frac{1}{2\pi} \int |F(\omega)|^2 d\omegaf(t)2dt=2π1F(ω)2dω
  • 离散(DFT):∑∣x[n]∣2=1N∑∣X[k]∣2\sum |x[n]|^2 = \frac{1}{N} \sum |X[k]|^2x[n]2=N1X[k]2

4.7 对称性

傅里叶变换具有多种对称性,如实数信号的共轭对称性:
F(−ω)=F∗(ω)F(-\omega) = F^*(\omega) F(ω)=F(ω)
这些性质在分析和计算中非常有用。

4.8 时频分辨率不确定性原理

类似于量子力学中的测不准原理,在信号分析中,你无法同时获得任意高的时间分辨率和频率分辨率。加窗(如短时傅里叶变换)是分析时变信号频谱的一种折中方法,但会带来分辨率限制。小波变换等方法是试图更好地解决这一问题的技术。


5. 使用示例

5.1 信号降噪处理

代码如下:

import numpy as np
import matplotlib.pyplot as plt# 生成含噪声的信号
fs = 1000  # 采样率
t = np.linspace(0, 1, fs, endpoint=False)
signal = np.sin(2 * np.pi * 5 * t) + (0.8 * np.sin(2 * np.pi * 20 * t))
noise = 0.5 * np.random.normal(size=len(t))
noisy_signal = signal + noise# 傅里叶变换
fft_result = np.fft.fft(noisy_signal)
freqs = np.fft.fftfreq(len(t), 1/fs)# 滤波:保留5-20Hz频率
fft_filtered = fft_result.copy()
fft_filtered[np.abs(freqs) < 3] = 0    # 去除低频噪声
fft_filtered[np.abs(freqs) > 25] = 0   # 去除高频噪声# 逆傅里叶变换
filtered_signal = np.real(np.fft.ifft(fft_filtered))# 可视化结果
plt.figure(figsize=(12, 8))plt.subplot(311)
plt.plot(t, noisy_signal)
plt.title('原始含噪声信号')
plt.ylim(-3, 3)plt.subplot(312)
plt.plot(freqs[:len(freqs)//2], np.abs(fft_result)[:len(freqs)//2])
plt.title('频域分析')
plt.xlim(0, 50)plt.subplot(313)
plt.plot(t, filtered_signal, 'r', linewidth=1.5)
plt.plot(t, signal, 'k--', alpha=0.5)
plt.title('滤波后信号 vs 原始信号')
plt.legend(['滤波后', '原始纯净信号'])
plt.ylim(-3, 3)plt.tight_layout()
plt.savefig('signal_denoising.png', dpi=120)
plt.show()

实验结果:信号噪声被明显的消减了
在这里插入图片描述

5.1 信号降噪处理

完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
from skimage import data, color
from skimage.util import random_noise# 准备测试图像
image = color.rgb2gray(data.astronaut())
noisy_image = random_noise(image, mode='gaussian', var=0.01)  # 添加噪声# 二维傅里叶变换
fft_image = np.fft.fft2(noisy_image)
fft_shifted = np.fft.fftshift(fft_image)  # 低频移到中心# 创建高通滤波器
rows, cols = image.shape
crow, ccol = rows//2, cols//2
mask = np.ones((rows, cols), np.float32)
r = 30  # 滤波器半径
mask[crow-r:crow+r, ccol-r:ccol+r] = 0  # 中心区域置零# 应用滤波器
fft_filtered = fft_shifted * mask# 逆傅里叶变换
fft_ishift = np.fft.ifftshift(fft_filtered)
filtered_image = np.abs(np.fft.ifft2(fft_ishift))# 可视化结果
plt.figure(figsize=(15, 10))plt.subplot(231)
plt.imshow(image, cmap='gray')
plt.title('原始图像')plt.subplot(232)
plt.imshow(noisy_image, cmap='gray')
plt.title('带噪声图像')# 频谱可视化(对数缩放)
magnitude_spectrum = 20*np.log(np.abs(fft_shifted)+1)
plt.subplot(233)
plt.imshow(magnitude_spectrum, cmap='gray')
plt.title('频谱图')plt.subplot(234)
plt.imshow(mask, cmap='gray')
plt.title('高通滤波器')plt.subplot(235)
plt.imshow(filtered_image, cmap='gray')
plt.title('边缘增强结果')# 与原图比较
plt.subplot(236)
plt.imshow(np.clip(filtered_image*2, 0, 1), cmap='gray')  # 增强对比度
plt.title('增强效果')plt.tight_layout()
plt.savefig('image_edge_enhancement.png', dpi=120)
plt.show()

具体效果自己看吧 :)
在这里插入图片描述

两个Python示例完整展示了傅里叶变换在信号降噪和图像边缘增强中的应用,代码可直接复制运行(需安装numpy, matplotlib, scikit-image)


6. 总结

傅里叶变换是一座连接时域和频域的桥梁。它通过将复杂信号分解成最基本、最易于理解的正弦波(复指数)分量,为我们提供了分析和处理信号的强大工具。理解傅里叶变换不仅需要掌握其数学公式,更要理解其物理意义和核心思想:

任何信号都可以看作是不同频率振动的叠加。

从古老的傅里叶级数到现代无处不在的 FFT,傅里叶变换深刻地改变了我们处理信息的方式,是信号处理、通信、图像处理、物理等众多领域的基石。如果你想深入信号世界,透彻理解傅里叶变换是必不可少的第一步。


研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)


http://www.xdnf.cn/news/15777.html

相关文章:

  • vscode环境下c++的常用快捷键和插件
  • 嵌入式通信DQ单总线协议及UART(一)
  • Linux练习二
  • 鸿蒙蓝牙通信
  • [AI风堇]基于ChatGPT3.5+科大讯飞录音转文字API+GPT-SOVITS的模拟情感实时语音对话项目
  • 字节跳动开源Seed-X 7B多语言翻译模型:28语种全覆盖,性能超越GPT-4、Gemini-2.5与Claude-3.5
  • 关于Vuex
  • GeoPandas 城市规划:Python 空间数据初学者指南
  • 零基础 “入坑” Java--- 十二、抽象类和接口
  • ndexedDB 与 LocalStorage:全面对比分析
  • aosp15实现SurfaceFlinger的dump输出带上Layer详细信息踩坑笔记
  • EP01:【Python 第一弹】基础入门知识
  • Vue rem回顾
  • 文档表格标题跑到表格下方,或标题跟表格空隔太大如何处理
  • Java无服务架构新范式:Spring Native与AWS Lambda冷启动深度优化
  • Flutter基础(前端教程①⑤-API请求转化为模型列成列表展示实战)
  • 财务数字化——解读财务指标及财务分析的基本步骤与方法【附全文阅读】
  • Error:HTTP Status 405 - HTTP method POST is not supported by this URL
  • 大数据之路:阿里巴巴大数据实践——日志采集与数据同步
  • 短视频矩阵的未来前景:机遇无限,挑战并存
  • [spring6: Advice Advisor Advised]-快速理解
  • stm32继电器使用方法
  • 【HarmonyOS】Ability Kit - Stage模型
  • 2023 年 5 月青少年软编等考 C 语言八级真题解析
  • 安装tomcat启动startup.bat出现闪退问题
  • 驾驭 Spring Boot 事件机制:8 个内置事件 + 自定义扩展实战
  • windows wsl ubuntu 如何安装 maven
  • 前端知识回顾-登录界面
  • 实现el-select下拉框,下拉时加载数据
  • 【RK3576】【Android14】摄像头MIPI开发调试