傅里叶分析(2)

在《傅里叶分析(1)》中,讲述了连续信号的傅里叶分析方法,本文讲述离散信号的傅里叶分析方法。

虽然电、声、光、机械振动等信号在物理上是连续函数,但在实际工程中,其通常为离散信号,即若干离散的数据点。对于离散信号,傅里叶级数和傅里叶变换已经无法使用,需要使用 DTFT(离散时间傅里叶变换)和 DFT(离散傅里叶变换)分析离散信号。

1 离散信号的来源

离散信号来源于对连续信号的采样。数学处理上,离散信号为连续信号和采样函数(sampling function)的乘积:

采样函数为基于狄拉克 δ 函数(Dirac delta function)表述的脉冲序列,其定义如下:

采样函数为周期函数,其在非采样时刻的函数值为 0,由此可得仅限采样时刻的离散数据点。

采样函数的图像(图源:维基百科)

采样函数的傅里叶变换为频域上的采样函数,其周期为 1/T:

2 离散时间傅里叶变换(discrete-time Fourier transform,DTFT)

根据前述采样方法,可将离散信号 x{n} 视为连续函数,除了采样点之外其他时刻函数值均为0。

傅里叶变换的卷积特性可表示为:

利用傅里叶变换的卷积特性,对 x{n} 进行傅里叶变换,其结果即 DTFT 计算公式为:

变换结果 X(ξ) 为连续周期函数,其周期为 1/T,即 X(ξ)=X(ξ+n/T)。

由于 X(ξ) 为连续函数,其逆变换可直接使用傅里叶逆变换的计算公式。对于周期函数,可将积分区间从无穷大简化到一个周期内,得到 DTFT 逆变换公式:

其中,积分区间可为任意的区间,只需满足区间的长度为单个周期长度 1/T 即可。根据 n 取值的不同即可获得 x{n} 各项取值。

对于纯实数的信号 x{n},其变换结果 X(ξ) 在正频率和负频率的幅值为对称关系。

3 离散傅里叶变换(discrete Fourier transform,DFT)

虽然 DTFT 表明了离散信号的频谱分析方法,但是得到的频谱是连续函数,对基于程序的实际信号分析造成很大困难。

引用 DTFT 思路,将 x{n} 视为连续函数。根据连续信号的频谱特征,周期函数的频谱为离散点,由此可对频谱进行程序处理。

将包含 N 个数据点的有限数据集 x{n}(从 x{0} 至 x{N-1}),进行周期延拓,即 x{n} = x{n+k*T*N)},可使之成为在无穷大区间均有定义的周期函数,其周期为 T*N。由于 x{n} 的周期性,对 x{n} 进行DTFT 仅需在单周期内即可进行。

单周期内的 DTFT 为 DFT,其计算公式为:

很显然,X{k} 在区间 [0, N-1] 只有 N 个取值,且周期为 N。

同理,在频域的单周期内进行 DTFT 逆变换,即可得到 DFT 逆变换计算公式:

4 重要问题

4.1 频谱的类型

通常而言,时域信号 x{n} 来源为传感器信号、A/D电路转换等,其表示的物理量通常为可直接测量的物理量,如速度、电流、温度等。

实际应用中,频谱通常分为幅值谱(amplitude spectrum)和功率谱(power spectrum)两类。幅值谱表示与功率的平方根成比例的物理量(如速度、电流、电压等);功率谱表示功率或与功率成比例的物理量(如光强度、声强度等)。

功率谱示意图(图源:mathworks.com)

幅值谱和功率谱分别定义如下:

4.2 频谱范围与精度

对于纯实数函数,在正数范围内,DFT 可分析的频率范围为:

其中,t 为采样总时间,fs 为采样频率。

由 DFT 周期延拓的操作思路即可得,信号的基频为采样总时间对应的频率,其他所有频率都高于基频。根据奈奎斯特采样定理(Nyquist sampling theorem),离散信号可分析的频谱最高频率为采样频率的一半。对于更高频率部分,DFT 已无法分析。

DFT 频谱的频率分辨率为:

其中 N 为信号的数据点数量。

4.2 数据处理与窗函数

对离散信号的周期延拓,通常会在信号首尾两端形成较大的不连续。信号在时域的不连续会导致频谱泄露(spectral leakage),即人为形成某些本不存在的谐波。

通过窗函数(window function)对离散信号进行处理,使信号首尾两端的幅值逐步降低,可降低信号在两端的不连续性。

通过窗函数处理后的信号 y{n} 和原始信号 x{n} 之间,满足:

其中 w{n} 为窗函数。

窗函数应用效果对比(图源:《Digital Signal Processing Fundamentals and Applications》,作者 Li Tan)

常用的窗函数包括三角、Hamming、Hanning等。

若信号是宽带信号,即不存在很明显的频域尖峰,可无需窗函数处理。Hanning 窗函数适用于多数常规问题,可作为通用的窗函数。

Hanning 窗函数表达式为:

5 DFT 和 FFT 的关系

快速傅里叶变换(Fast Fourier Transform,FFT)是 DFT 的一种计算方法。FFT 本质上是利用其它替代计算方式,避免根据 DFT 的定义直接计算 DFT,从而加快计算速度,节约硬件资源。

FFT 当前最常用方法为 Cooley–Tukey 方法。许多工程计算软件均有 FFT 相关功能,直接导入数据序列进行分析即可。

6 总结

对(1)、(2)文的重点进行总结:

  • 傅里叶级数和傅里叶变换表述了连续信号频谱分析方法
  • DTFT 表述了无限多样本的离散信号频谱分析方法
  • DFT 表述了有限多样本的离散信号频谱分析方法
  • 只有 DFT 可直接用于程序计算
  • 使用 FFT 可加快 DFT 计算速度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/141040.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式之模版方法(TemplateMethod)

模版方法 钩子函数 回调函数 在父类里面有一个模版方法,在这个方法里面调用了op1,op2,op3… 在子类里面如果想要改变父类的op1和op2 只需要重写op1和op2,那么这个重写之后的方法,可以在父类里面直接调用的到 例子: J…

ctfshow sql171-179

mysql 先打开我们本地的mysql,可以看到这些数据库 information_schema information_schema 库: 是信息数据库,其中保存着关于MySQL服务器所维护的所有其他数据库的信息比如数据库名,数据库表, SCHEMATA表: 提供了当前MySQL实例…

Linux下MSSQL (SQL Server)数据库无法启动故障处理

有同事反馈一套CentOS7下的mssql server2017无法启动需要我帮忙看看,启动报错情况如下 检查日志并没有更新日志信息 乍一看mssql-server服务有问题,检查mssql也确实没有进程 既然服务有问题,那么我们用一种方式直接手工后台启动mssql引擎来…

22.构造一个关于员工信息的结构体数组,存储十个员工的信息

结构体问题。构造一个关于员工信息的结构体数组,存储十个员工的信息,包括员工工号,员工工资,员工所得税,员工实发工资。要求工号和工资由键盘输入,并计算出员工所得税(所得税工资*0.2&#xff0…

C语言--1,5,10人民币若干,现在需要18元,一共有多少种?

今天小编给大家分享一下穷举法的一道典型例题 一.题目描述 1,5,10人民币若干,现在需要18元,一共有多少种? 二.思路分析 总共有18块钱,设1元有x张,5元有y张,10元有z张,则有表达式:x5y10z18,穷举法最重要的…

java网络编程之UDP协议

文章目录 UDP简介一发一收客户端:服务端: 多发多收实现多开客户端:服务端 UDP简介 UDP(User Datagram Protocol) DatagramSocket 用于创建客户端、服务端DatagramSocket() :创建客户端的Socket对象,系统随…

Java 算法篇-深入了解单链表的反转(实现:用 5 种方式来具体实现)

🔥博客主页: 小扳_-CSDN博客 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 单链表的反转说明 2.0 单链表的创建 3.0 实现单链表反转的五种方法 3.1 实现单链表反转 - 循环复制(迭代法) 3.2 实现单链表反转 - 头插法 3…

什么是浏览器指纹?指纹浏览器如何避免浏览器指纹的追踪识别?

在做独立站跨境电商的过程中,海外社交媒体平台已成为我们必不可少的交易渠道。但是,由于各大平台对账号管理极其严格,对账户进行严密监控也成为了常态。这当然与浏览器指纹识别有关,今天龙哥就给大家科普一下什么是浏览器指纹&…

Autosar模块介绍:Memory_4(EA-EE抽象)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍:Memory_4(EA-EE抽象 1 基本术语解释2 Ea组成结构图3 Ea基本操作3.1 通用操作3.2 作业的进程(通用需求)3.3 读操作过程3.4 写操作过程3.5 擦除过程3.6 比较过程 4 Ea常用操作时序4.1 初始化4.2…

如何搞垮一个测试团队?

要想彻底搞垮一个测试团队并非易事,需要多角色通力配合、多方联动、综合施策,才能达到目的。 本文从实践经验出发,为大家总结了搞垮测试团队的18项措施,或许可以给大家带来一些启发。 — 1 — QA QA作为质量管理者,…

轻量封装WebGPU渲染系统示例<29>- 深度模糊DepthBlur(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/DepthBlur.ts 当前示例运行效果: 此示例基于此渲染系统实现,当前示例TypeScript源码如下: const blurRTTTex0 { diffuse: { uuid: "rtt0", …

【vue】虚拟dom的原理是什么?手写实现虚拟dom !

1.虚拟dom的原理 虚拟 DOM 是对 DOM 的抽象,本质上就是用 JavaScript 对象来描述 DOM 结构。Vue.js 中关于虚拟 DOM 的实现主要进行了以下几个步骤: 1.生成虚拟 DOM: Vue.js 使用 render 函数来依据模板代码生成虚拟 DOM。在这个过程中&a…

【Java 进阶篇】JQuery DOM操作:Class属性的舞蹈魔法

在前端的世界中,JQuery如同一位舞者,通过灵活的舞步为我们展示了操纵HTML元素的艺术。而在这场舞蹈的精彩演出中,Class属性的操作是一项极富魅力的技艺。在本篇博客中,我们将深入研究JQuery DOM操作中的Class属性操作,…

gradle 使用记录

gradle 使用记录 下载与设置android studio 配置 参考 IDEA如何配置 Gradle 及 Gradle 安装过程(详细版) 设置Gradle国内镜像并配置本地仓库地址 下载与设置 腾讯镜像下载 比如gradle-8.4-bin.zip 新建环境变量 GRADLE_HOME 为 D:\java\gradle &#…

【深圳1024开发者城市聚会】主理人视角的聚会现场,一起来看看有啥不一样的东西

【深圳1024开发者城市聚会】主理人视角的聚会现场,一起来看看有啥不一样的东西 今年的1024,我们在深圳,玩点不一样的… 文章目录 1 活动背景2 活动宣传3 活动准备4 活动现场布置会场会场引导签到深圳站视频展播前半程议题分分享简单茶歇后半场…

【HttpRunnerManager】搭建接口自动化测试平台实战

一、需要准备的知识点 1. linux: 安装 python3、nginx 安装和配置、mysql 安装和配置 2. python: django 配置、uwsgi 配置 二、我搭建的环境 1. Centos7 (配置 rabbitmq、mysql 、Supervisord) 2. python 3.6.8 (配置 django、uwsgi&am…

力扣双周赛 -- 117(容斥原理专场)

class Solution { public:long long c2(long long n){return n > 1? n * (n - 1) / 2 : 0;}long long distributeCandies(int n, int limit) {return c2(n 2) - 3 * c2(n - limit 1) 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1);} };

死锁(JAVA)

死锁在多线程代码中是非常严重的BUG,一旦代码中出现死锁就会导致线程卡死。 当单个线程连续两次对同一个对象进行加锁操作时,如果该锁是不可重入锁就会发生死锁(线程卡死) 两个线程两把锁,如果出现这种情况也是会发生…

基于Python+Django的寻人失物失物招领系统

运行环境 开发语言:Python python框架:django 软件版本:python3.7 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:PyCharm/vscode 前端框架:vue.js 项目介绍 寻人失物失物招领系统交流平台的主要使用…

尝试使用php给pdf添加水印

在开发中增加pdf水印的功能是很常见的,经过实验发现这中间还是会有很多问题的。第一种模式,采用生成图片的方式把需要添加的内容保存成图片,再将图片加到pdf中间,这种方法略麻烦一些,不过可以解决中文乱码的问题&#…