离散Fourier变换的一种理解方法

1.  离散Fourier变换的定义

         一个信号 x 的离散Fourier变换(Discrete Fourier Transform,简记为DFT)定义为

                \displaystyle X(\omega_k) \triangleq \sum_{n=0}^{N-1}x(t_n)e^{-j \omega_k t_n} (k = 0,1 ,...,N - 1)

其逆(inverse) Fourier变换(简记为 IDFT)定义为

                \displaystyle x(t_n) =\frac{1}{N}\sum_{k=0}^{N-1}X(\omega_k)e^{j \omega_k t_n} (n = 0,1 ,...,N - 1)

(译注:符号“”表示“根据定义,左边等于右边”。)

其中,

        x (t_n) \triangleq 在时刻 t_n (秒)时的输入信号的幅度(amplitude)。

        t_n \triangleq nT  = n个采样时刻(instant)(秒)。

        n \triangleq 采样顺序编号(simple number)(整数)。

        T \triangleq 采样周期(simple period)(整数)。

      X(\omega_k) \triangleq 信号 x 弧度频率(radian frequency)(译注:即,角频率) \omega_k 处的频谱(spectrum)。

        \omega_k \triangleq k \Omega =  n 个频率样本(弧度/秒)。

        \Omega \triangleq \frac{2\pi}{NT}  = 弧度频率采样间隔(sampling interval)

        f_s \triangleq \frac{1}{T} = 采样率(sampling rate)(样本数/秒,或者Hz(Hertz))

        N = 时间和频率中的采样数目(整数)。

(译注:Hz的物理意义为每秒循环次数(cycles per second)”)

2.  离散Fourier变换的数学知识

    在信号处理的文献中,通常在前面的定义中令 T = 1, 从而获得更为纯粹的形式:

\displaystyle X(k) \triangleq \sum_{n=0}^{N-1}x(n)e^{-j2\pi nk/N} (k = 0,1 ,...,N - 1),

\displaystyle x(n) =\frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{j 2\pi nk/N} (n = 0,1 ,...,N - 1)

其中,

        j \triangleq \sqrt{-1} (复数的基)

        \displaystyle e \triangleq \lim_{n \rightarrow \infty}(1+\frac{1}{n})^{n} = 2.71828182845905 ... 。

2.1  复平面

    下面是一个点在复平面中的示意图:

 --------------------------------------------图2.2. 复数在复平面中的图像-----------------------------------------

z = x + jy 绘制为复平面中的点 (x, y) 可以视为笛卡尔(Cartesian)坐标或直线坐标(rectilinear)中的绘图(译注:均有两个轴上的值相对应)。我们也可以根据极坐标将复数表示为一个有序对(r,θ),其中,r是原点到所绘点的距离,θ是数相对于正实数轴(按 y = 0 且 x > 0 所定义的直线)的夹角(如图2.2所示)。

    使用初等几何知识,可以迅速地证明,从矩形坐标到极坐标的转换由下列公式完成:

                r = \sqrt{x^2+y^2},

                \theta = \tan^{-1}(\frac{y}{x})

第一个等式由 Pythagoras定理直接可推导出,第二个等式由tangent的定义可直接推导出。

              ​​​​​​​r \triangleq | z| = \sqrt{x^2+y^2 }  = z 的((modulus),大小(magnitude),绝对值(absolute value),范数(norm),或者半径(radius))(译注:对于复数而言,以上几种称谓是等效的)。

              \theta \triangleq \angle z = \tan^{-1}(\frac{y}{x}) = z 的(角度(angle),参数(argument),相位(phase)) 。

 z 的共轭复数用 \overline{z} 表示,定义为

                \overline{z} \triangleq x - jy (译注:互为共轭的复数关于x轴对称)。

2.2  圆周运动(Circular Motion)

    因为复数正弦的模是常量,因此,在复平面上,它一定位于圆周上。例如,

                x(t) = e^{j\omega t}

在复平面上沿着单位圆画出逆时针(counter-clockwise)圆周运动的轨迹;而

                \overline{x(t)} = e^{-j\omega t}

是顺时针(clockwise)的圆周运动。我们称形如 e^{j\omega t} (ω > 0)的复数正弦函数为正频率正弦函数(positive-frequency sinusoid),称形如  e^{-j\omega t} 的复数正弦函数为负频率正弦函数(negative-frequency sinusoid)。注意,正负频率正弦函数一定是复数。

2.3  圆周运动的投影(Projection of Circular Motion)

        单位圆在复平面上的方程可表示成 z = e^{j\omega t} ,实部和虚部分别为

                \mathbf{Re}\{e^{j\omega t}\} = \cos(\omega t) ,\mathbf{Im}\{e^{j\omega t}\} = \sin(\omega t) 。

在复平面上,可以将这个解释为正弦运动是圆周运动在任意直线上的投影因此正弦运动 \cos(\omega t) 是圆周运动 e^{j\omega t} 在实轴( x轴)上的投影,而正弦运动 \sin(\omega t) 是圆周运动 e^{j\omega t} 

在虚轴( y轴)上的投影

        图 5.7 显示了复数正弦曲线与时间的关系图,以及它在坐标平面上的投影。 这是显示 z 平面与时间的 3D 图。 轴是实部、虚部和时间。(或者我们可以使用幅度和相位与时间的关系。)

-----------------------------------------------图 5.7 复数正弦曲线及期投影------------------------------------------

请注意,左侧投影(在 z 平面上)是一个圆,下部投影(实部与时间)是余弦,上部投影(虚部与时间)是正弦。 穿过绘图的点在 z 平面上投影为匀速圆周运动,在其他两个平面上投影为正弦运动。

2.4  正负频率

        根据Euler恒等式 e^{j\theta} = \cos(\theta)+j\sin(\theta) ,我们可以得到

        \cos(\theta)=\frac{e^{j\theta}+e^{-j\theta}}{2} ,

        \sin(\theta)=\frac{e^{j\theta}-e^{-j\theta}}{2j} 。

令 \theta = \omega t + \phi 我们看到正弦和余弦(以及所有真正的正弦曲线)都由相等且相反的圆周运动之和组成换句话说,每个实正弦曲线都由正负频率分量的同等贡献组成。所有实信号都是如此当我们进行频谱分析时,我们会发现每个实信号都包含等量的正频率和负频率,即,若用 X(ω)来表示实信号 x(t) 的频谱,我们总是有 | X(-ω)| = | X(ω)| 。

        注意,在数学上,复数正弦  Ae^{j(\omega t+\phi)} 确实比实数正弦 A \sin(\omega t + \phi) 更简单且更基础因为e^{j\omega t} 仅由一个频率组成 sin(ωt ) 实际上由两个频率 ω ω 组成 我们可以将实正弦曲线视为正频率和负频率复正弦曲线的总和,因此从这个意义上说,实正弦曲线是复正弦曲线的复杂程度的两倍”。 复数正弦曲线也更好,因为它们具有恒定的模量(constant modulus)。复正弦曲线的“幅度包络检测器(Amplitude envelope detectors)”很简单:只需计算实部和虚部平方和的平方根即可获得任意时刻的瞬时峰值幅度。频率解调器也同样微不足道:只需对复正弦曲线的相位进行微分即可获得其瞬时频率。因此,信号处理工程师通常更喜欢在进一步处理之前将实正弦曲线转换为复正弦曲线,这也就不足为奇了

3.  内积与投影

    内积(inner product)(或称点积),可以看成一个信号y(.)(注:记法y(n)表示信号y在采样 n处的单个采样,而记法y(.)或者简单地记为 y 表示所有时间上的整个信号)在另一个信号x(.)上的投影内积 <y,x> 计算的是 y x上的投影系数(coefficient of projection)(注:信号 y 到另一个信号 x 的投影系数可以被认为是 y 中存在多少 x 的度量)。 x (n) = e^{j\omega_k nT} (n = 0 ,1 ,..,N - 1)(这是一个采样信号,单位幅度,0相位,复数正弦),假设选择角频率为 \omega_k = 2\pi kf_{s}/N ,则内积计算的是离散Fourier变换(DFT)。对于 DFT ,具体的内积为

                \displaystyle <y, x> = \sum_{n=0}^{N-1}y(n)\overline{x (n)} = \sum_{n=0}^{N-1}y(n)e^{-j2\pi nk/N} \triangleq Y(\omega_k) 。

另一个常用的情况是离散时间Fourier变换(DTFT),它与DFT类似,区别仅在于,它接收一个无限的采样数,而不是仅 N 个样本点。在这情况下,频率是连续的,并且

                \displaystyle <y, x> = \sum_{n=0}^{\infty}y(n)e^{-j\omega nT} \triangleq \mathbf{DTFT}_{\omega}(y)

DTFT是当 DFT 中的样本数量接近无穷大时您得到的极限值。总和的下限保持为零,因为我们假设所有信号在负时间都为零。这意味着我们正在使用单边(unilateral)Fourier变换还存在相应的双边变换(bilateral transform),其求和下限为 -∞。

4. 理解离散Fourier变换

    对于长度为N的复数序列x (n) (n = 0 ,1 ,...,N – 1),其离散Fourier变换定义为

                \displaystyle X(\omega_k) \triangleq \sum_{n=0}^{N-1}x(n)e^{-j \omega_k t_n} =\sum_{n=0}^{N-1}x(n)e^{-j 2\pi kn/N}(k = 0,1 ,...,N - 1) 。

     t_n \triangleq nT = 第 个采样时刻(instant)(秒)。

     \omega_k \triangleq k\Omega  =  第 个频率样本(弧度/秒)。

    T \triangleq 1/f_{s} = 时间采样间隔(秒)。

     \Omega \triangleq 2\pi f_{s}/N  = 频率采样间隔(秒)。

现在,我们需要全面理解变换核(transform kernel),即

        e^{-j\omega_k t_n } = \cos(\omega_k t_n) - j \sin(\omega_k t_n)

这个变换内核由在 0 和采样率 \omega_s \triangleq 2\pi f_s 之间均匀间隔的 N 个离散频率 \omega_k 的复正弦曲线样本组成。

剩下的问题就是,理解x (n)乘以每个复数正弦曲线的逐点乘积在n上求和的目的和函数。我们将这种情况解释为内积运算这个内积运算计算将信号x 投影到复数正弦曲线 \cos(\omega_k t_n) - j \sin(\omega_k t_n) 上所产生的投影系数因此在 \omega_k 处的离散Fourier变换 X(\omega_k) 是一种复数正弦在那个用输入信号x所表示的频率处的幅度和相位的度量这是所有变换和(以离散时间表示)与积分(以连续时间表示)和它们的核的基本函数

参考资料:

 《Mathematics of the Discrete Fourier Transform (DFT)》  Julius O. Smith III

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html | 基于iframe的简易富文本编辑器

效果图 支持: 选中后 ctrlI 斜体 代码 思路就是在iframe种嵌套html和css。 <pre> - 支持: 选中后 ctrlI 斜体 - todo: 鼠标实现单击斜体 </pre> <iframe name"richedit" style"height:30%; width:100%;"></iframe><script…

操作符详解(2)

9.条件操作符 由问号和冒号组成&#xff0c;有三个表达式&#xff0c;有三个操作符&#xff0c;所以条件操作符是唯一的一个三目操作符&#xff0c;exp1为真&#xff0c;exp2则计算&#xff0c;exp3不算&#xff0c;整个表达式的结果就是exp2的结果。exp1为假&#xff0c;exp2…

LVS负载均衡DR(直接路由)模式

在LVS&#xff08;Linux Virtual Server&#xff09;负载均衡中的DR&#xff08;Direct Routing&#xff09;模式下&#xff0c;数据包的流向如下&#xff1a; 客户端发送请求到负载均衡器&#xff08;LVS&#xff09;的虚拟IP&#xff08;VIP&#xff09;。负载均衡器&#x…

【网络】数据链路层——MAC帧协议 | ARP协议

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 来到数据链路层后&#xff0c;完整的数据被叫做数据帧&#xff0c;习惯上称之为MAC帧。 MAC帧协议 | A…

C++STL之string类

​ 食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f340;本文前置知识&#xff1a;C基础 ♈️今日夜电波&#xff1a;喜劇—星野源 1:06 ━━━━━━️&#x1f49f;──────── 3:51 …

AI 绘画Stable Diffusion 研究(十三)SD数字人制作工具SadTlaker使用教程

免责声明: 本案例所用安装包免费提供&#xff0c;无任何盈利目的。 大家好&#xff0c;我是风雨无阻。 想必大家经常看到&#xff0c;无论是在产品营销还是品牌推广时&#xff0c;很多人经常以数字人的方式来为自己创造财富。而市面上的数字人收费都比较昂贵&#xff0c;少则几…

三自由度PUMA机器人非线性控制研究(Matlab代码、Simulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

pandas数据分析40——读取 excel 合并单元格的表头

案例背景 真的很容易疯....上班的单位的表格都是不同的人做的&#xff0c;所以就会出现各种合并单元格的情况&#xff0c;要知道我们用pandas读取数据最怕合并单元格了&#xff0c;因为没规律...可能前几列没合并&#xff0c;后面几列又合并了....而且pandas对于索引很严格&am…

飞机打方块(四)游戏结束

一、游戏结束显示 1.新建节点 1.新建gameover节点 2.绑定canvas 3.新建gameover容器 4.新建文本节点 2.游戏结束逻辑 Barrier.ts update(dt: number) {//将自身生命值取整let num Math.floor(this.num);//在Label上显示this.num_lb.string num.toString();//获取GameCo…

Flink学习笔记(一)

流处理 批处理应用于有界数据流的处理&#xff0c;流处理则应用于无界数据流的处理。 有界数据流&#xff1a;输入数据有明确的开始和结束。 无界数据流&#xff1a;输入数据没有明确的开始和结束&#xff0c;或者说数据是无限的&#xff0c;数据通常会随着时间变化而更新。 在…

【SpringCloud】SpringCloudAlibaba官网资料

出现原因 Spring Cloud Netflix Projects Entering Maintenance Mode 官网 博客 https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md官网 https://spring.io/projects/spring-cloud-alibaba#overview英文 https://github.com/alibaba/spring-cloud-…

数模论文写作细节要求

目录 优秀论文必要条件 数学建模的基本思路 第一步&#xff1a;了解问题——查文献、找数据 第二步&#xff1a;阐述要解决什么问题、用什么方法 其余步骤&#xff1a;给出数学模型、计算求解、对比结果与真实情况、应用于现实问题。 使用某种数学方法的理由和依据 创…

【C语言进阶(4)】指针和数组笔试题

文章目录 Ⅰ 一维数组Ⅱ 字符数组题型 1题型 2题型 3 Ⅲ 二维数组 数组名的意义 sizeof(数组名)&#xff0c;这里的数组名表示整个数组&#xff0c;计算的是整个数组的大小。&数组名&#xff0c;这里的数组名表示的是整个数组&#xff0c;取出的是整个数组的地址。除了上述…

和鲸 ModelWhale 与中科可控多款服务器完成适配认证,赋能中国云生态

当前世界正处于新一轮技术革命及传统产业数字化转型的关键期&#xff0c;云计算作为重要的技术底座&#xff0c;其产业发展与产业规模对我国数字经济的高质量运行有着不可取代的推动作用。而随着我国数字上云、企业上云加快进入常规化阶段&#xff0c;云计算承载的业务应用越来…

Python——列表(list)推导式

本文基于python3。 目录 1、Python推导式2、列表(list)推导式2.1、定义2.2、实际操作2.2.1、一个表达式&#xff0c;后面为一个 for 子句2.2.2、一个表达式&#xff0c;后面为一个 for 子句&#xff0c;然后&#xff0c;跟着if 子句。2.2.3、一个表达式&#xff0c;后面为一个…

Java虚拟机(JVM):引用计数算法

一、引言 我们学习了Java内存运行时区域的各个部分&#xff0c;其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生&#xff0c;随线程而灭。栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来就已知的…

Rancher使用cert-manager安装报错解决

报错&#xff1a; rancher-rke-01:~/rke/rancher-helm/rancher # helm install rancher rancher-stable/rancher --namespace cattle-system --set hostnamewww.rancher.local Error: INSTALLATION FAILED: Internal error occurred: failed calling webhook "webhook…

数据结构 - 线性表的定义和基本操作

一、定义 线性表是具有相同特性的数据元素的一个有限序列。 线性表&#xff1a; 由n(n≥0)个数据元素&#xff08;结点&#xff09;组成的有限序列。线性表中数据元素是一对一的关系&#xff0c;每个结点最多有一个直接前驱&#xff0c;和一个直接后继 二、线性表的基本操作 …

ORB-SLAM2学习笔记9之图像帧Frame

文章目录 0 引言1 Frame类1.1 构造和重载函数1.1.1 双目相机1.1.2 RGBD相机1.1.3 单目相机 1.2 成员函数1.2.1 特征点去畸变1.2.2 特征点网格分配1.2.3 双目匹配1.2.4 RGBD相机深度计算 1.3 成员变量 2 Frame类的用途 0 引言 ORB-SLAM2学习笔记7详细了解了System主类和多线程和…