离散傅里叶变换公式推导

离散傅里叶变换公式推导离散傅里叶变换公式推导先抛变换公式:Fm=∑n=0N−1fne−2πimn/N↔fn=1N∑m=0N−1Fme2πimn/NF_m=\sum_{n=0}^{N-1}f_ne^{-2\piimn/N}\leftrightarrowf_n=\frac{1}{N}\sum_{m=0}^{N-1}F_me^{2\piimn/N}Fm​=n=0∑N−1​fn​e−2πimn/N↔fn​=N1​m=0∑N−1​Fm​e2πimn/N式中的N是数据点个数讲道理一开始完全看不懂公式这么来的,一顿百度后我学

大家好,又见面了,我是你们的朋友全栈君。

离散傅里叶变换公式推导

先抛变换公式:
F m = ∑ n = 0 N − 1 f n e − 2 π i m n / N ↔ f n = 1 N ∑ m = 0 N − 1 F m e 2 π i m n / N F_m=\sum_{n=0}^{N-1}f_ne^{-2\pi imn/N}\leftrightarrow f_n=\frac{1}{N}\sum_{m=0}^{N-1}F_me^{2\pi imn/N} Fm=n=0N1fne2πimn/Nfn=N1m=0N1Fme2πimn/N
式中的N是数据点个数
讲道理一开始完全看不懂公式这么来的,一顿百度后我学到了很多,但就是没学到怎么推公式。好吧只能自己推。
先来看一下DFT的物理意义:DFT示意图
(图我网上随便下的)
离散傅里叶变换是把周期性离散信号变换到频域上,大家知道,周期信号变到频域上是离散的。离散就是在个别点 { x n } \{x_n\} {
xn}
有值。我是学物理的,物理里面离散的可以这么表示:
f ( x ) = ∑ n = 0 N − 1 f n δ ( x − x n ) f(x)=\sum_{n=0}^{N-1}f_n\delta(x-x_n) f(x)=n=0N1fnδ(xxn)
δ ( x ) \delta(x) δ(x)是个在 x = 0 x=0 x=0处无穷大,其余位置为0且全空间积分为1的函数 ∫ − ∞ ∞ δ ( x ) d x = 1 \int_{-\infty}^{\infty}\delta(x)dx=1 δ(x)dx=1

周期性信号变到频域上,那不就是傅里叶级数吗。自然有公式
F m = ∫ − T T ∑ n = 0 N − 1 f n δ ( x − x n ) e − i x k m d x = ∑ n = 0 N − 1 ∫ f n δ ( x − x n ) e − i x k m d x = ∑ n = 0 N − 1 f n e − i x n k m \begin{aligned} F_m &= \int_{-T}^{T}\sum_{n=0}^{N-1}f_n\delta(x-x_n)e^{-ixk_m}dx \\&=\sum_{n=0}^{N-1}\int f_n\delta(x-x_n)e^{-ixk_m}dx \\&=\sum_{n=0}^{N-1}f_ne^{-ix_nk_m} \end{aligned} Fm=TTn=0N1fnδ(xxn)eixkmdx=n=0N1fnδ(xxn)eixkmdx=n=0N1fneixnkm
接下来我们假设 d x , d k dx,dk dx,dk分别是 { x n } \{x_n\} {
xn}
, { k n } \{k_n\} {
kn}
的间距,那么:
x n = n d x , k m = m d k x_n=ndx,\qquad k_m = mdk xn=ndx,km=mdk
代入上式:
F m = ∑ n = 0 N − 1 f n e − i x n k m = ∑ n = 0 N − 1 f n e − i m n d x d k \begin{aligned} F_m &=\sum_{n=0}^{N-1}f_ne^{-ix_nk_m} \\&=\sum_{n=0}^{N-1}f_ne^{-imndxdk} \end{aligned} Fm=n=0N1fneixnkm=n=0N1fneimndxdk
是不是和最上面的式子很接近了?还差最后一步,确定 d x d k dxdk dxdk的值。
下面我懒得写了,只说一下做法吧

  1. 先写出 F m F_m Fm f n f_n fn的逆变换,
    f n = c ∑ n = 0 N − 1 F m e i m n d x d k f_n = c\sum_{n=0}^{N-1}F_me^{imndxdk} fn=cn=0N1Fmeimndxdk
    c c c是个系数,之后应该能计算出是 1 / N 1/N 1/N
  2. 把上面的 F m F_m Fm表达式带进去,就能得到用 f n ′ f_{n’} fn求和表达的 f n f_n fn,这要求 d x d k dxdk dxdk满足一定关系,其实就是满足 d x d k = 2 π N dxdk = \frac{2\pi}{N} dxdk=N2π
  3. 最后把公式里的 d x d k dxdk dxdk替换就完事了

这个公式推导倒是不难,主要问题是理解不要出现偏差。所谓离散傅里叶变换是把周期离散信号变换到周期离散频谱,这是真的离散信号。一开始我以为是连续信号在某些给定点采样得到的值呢(没有学过信号相关的内容,在计算物理中遇到了这个离散傅里叶变换)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160837.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Scala之隐式转换「建议收藏」

    Scala之隐式转换「建议收藏」概述简单说,隐式转换就是:当Scala编译器进行类型匹配时,如果找不到合适的候选,那么隐式转化提供了另外一种途径来告诉编译器如何将当前的类型转换成预期类型。隐式转换有四种常见的使用场景:将某一类型转换成预期类型类型增强与扩展模拟新的语法类型类语法隐式转换有新旧两种定义方法,旧的定义方法指是的“implictdef”形式,这是Scala2.10版本之前的写法,在Scala2.10版本之

    2022年10月11日
    2
  • htmla标签下划线去除_html超链接的下划线怎么去掉?a标签去下划线的方法都在这里…

    htmla标签下划线去除_html超链接的下划线怎么去掉?a标签去下划线的方法都在这里…本篇文章就是关于html超链接取消下划线的用法,教你如何快速的去掉HTML超链接下划线的方法,最后还有相关代码解释,下面就让我们一起看看这篇文章吧首先我们使用css的基础样式来做一个最简单的去下划线的方法:htmla超链接标签,默认有的浏览器显示有下划线,有的没有下划线,大多锚文本超链接A标签内字体是有下划线的,怎么去除超链接下划线?html超链接去除下划线怎么做?去掉去除超链接锚文本的…

    2022年6月3日
    40
  • 二叉树性质及证明「建议收藏」

    二叉树性质及证明「建议收藏」二叉树性质及证明(1)规定根节点层次为0,则一棵非空二叉树的第i层上最多有2i个结点。(2)规定根节点层次为0,则深度为k的二叉树的最大结点数为2(k+1)-1。(3)具有n个结点的完全二叉树的深度k为不超过lb(n+1)-1的最大整数。(4)对于一棵非空二叉树,如果叶节点个数为n0,度为2的结点数为n2,则有n0=n2+1。(5)对于具有n个结点的完…

    2022年5月31日
    38
  • TCP和UDP协议的区别_朋友关系

    TCP和UDP协议的区别_朋友关系在解释两者之间的关系之前,我们必须从宏观的角度了解互联网的整个交互模型。因为当了解互联网在大体上是如何运作时,我们才能了解HTTP和TCP存在的意义,包括他们所要解决的问题是。 (此图来自Udacity的网络协议教程)互联网的模型被分为4层,从上至下每一层都依赖其底层协议。换言之,Application(应用层)的协议操作成功的前提是Transport(运输层)的存在。没有运输层就没有应…

    2022年9月20日
    3
  • 李宏毅《机器学习 深度学习》简要笔记(一)

    李宏毅《机器学习 深度学习》简要笔记(一)线性回归,梯度下降,优化算法

    2022年8月3日
    8
  • C语言文件打开方式简介

    C语言文件打开方式简介1、“r”以只读方式打开一个文件;2、“w”以只写方式打开一个文件;3、“a”打开一个文件追加;4、“rb”以只读方式打开一个二进制文件;5、“rw”以只写方式打开一个二进制文件;6、“ra”打开一个二进制文件追加;7、”r+”以读写方式打开一个文件;8、“w+”以读写方式建立一个文件;9、“a+”以读写方式打开一个文件追加;10、“rb+”以读写方式打开一个二

    2022年7月13日
    15

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号