离散傅里叶变换(Example)

UTF8gbsn

注意,不建议读者直接阅读离散傅里叶变换,而是应该先阅读并理解傅里叶级数、和(连
续)傅里叶变换。这样才能够理解离散的傅里叶变换。

Introduction

在工程上,我们通常需要对离散的信号进行处理。所以我们必须要应用一种离散的傅里叶
变换。傅里叶级数的表示形式。如果们又信号 f ( t ) f(t) f(t)
α k = 1 2 l ∫ − l l f ( x ) e − i k π x l d x , ( k = 0 , ± 1 , ± 2 , . . . ) \alpha_k=\frac{1}{2l}\int_{-l}^{l}{f(x)e^{-i \frac{k \pi x}{l}}dx},(k=0,\pm 1,\pm 2,...) αk=2l1llf(x)eilkπxdx,(k=0,±1,±2,...) l = π l=\pi l=π,我们有,注意一点 i i i是虚数单位。不是下标
α k = 1 2 π ∫ 0 2 π f ( t ) e − i k t d t , ( k = 0 , ± 1 , ± 2 , . . . ) \alpha_k=\frac{1}{2\pi} \int_{0}^{2\pi}{f(t)e^{-ikt}dt},(k=0,\pm 1, \pm 2, ...) αk=2π102πf(t)eiktdt,(k=0,±1,±2,...)
我们看 α k \alpha_k αk对应频率成分是 k 2 π \frac{k}{2\pi} 2πk,那么我们可以看到。那么我们可以
看到,我们恒可以把离散的数据 y = { y i } , y = ( 1 , 2 , . . . , n ) y=\{y_i\},y=(1,2,...,n) y={yi},y=(1,2,...,n),看做一个周期 2 π 2\pi 2π上的
采样点。因为 y y y是一定离散的数据。

那么我们如何来计算 α k \alpha_k αk?因为 f ( t ) = { y i } f(t)=\{y_i\} f(t)={yi},是离散信号。所以我们必须变换
α k \alpha_k αk为如下的等式,注意有一点儿,也就是 i i i是虚数单位,不是标号。

α k = 1 n ∑ j = 0 n − 1 f ( 2 π j n ) e − 2 π i j k n \alpha_k=\frac{1}{n}\sum_{j=0}^{n-1}f(\frac{2\pi j}{n})e^{\frac{-2\pi i j k}{n}} αk=n1j=0n1f(n2πj)en2πijk
也就是说

y ^ k / n ≈ α k ≈ 1 n ∑ j = 0 n − 1 y j w ‾ j k \widehat{y}_{k}/n\approx\alpha_k\approx \frac{1}{n}\sum_{j=0}^{n-1}y_j \overline{w}^{jk} y k/nαkn1j=0n1yjwjk

y j = f ( 2 π j n ) , w = e 2 π i n y_j=f(\frac{2\pi j}{n}), w=e^{\frac{2\pi i}{n}} yj=f(n2πj),w=en2πi
我们把 y ^ k \widehat{y}_k y k叫做离散傅里叶变换。

Discrete Fourier Analysis

我们来看看离散傅里叶级数的一些分析,离散傅里叶变换,实际上就是对下面的公式进行
离散化。也就是离散 ( 0 , 2 π ) (0,2\pi) (0,2π),用离散的数据来替代。所以积分 ∫ 0 2 π \int_{0}^{2\pi} 02π
成了累加 ∑ j = 0 n − 1 \sum_{j=0}^{n-1} j=0n1, f ( t ) ↦ y j f(t)\mapsto y_j f(t)yj

α k = 1 2 π ∫ 0 2 π f ( t ) e − i k t d t , ( k = 0 , ± 1 , ± 2 , . . . ) \alpha_k=\frac{1}{2\pi} \int_{0}^{2\pi}{f(t)e^{-ikt}dt},(k=0,\pm 1, \pm 2, ...) αk=2π102πf(t)eiktdt,(k=0,±1,±2,...)

y ^ k / n ≈ α k ≈ 1 n ∑ j = 0 n − 1 y j w ‾ j k \widehat{y}_{k}/n\approx\alpha_k\approx \frac{1}{n}\sum_{j=0}^{n-1}y_j \overline{w}^{jk} y k/nαkn1j=0n1yjwjk

所以不难理解,这是用离散的值来计算 α k \alpha_k αk的直接表现。那么下面我们来看看当
k > n k>n k>n时会发生什么

一般我们只计算 y ^ 0 , . . . , y ^ n − 1 \widehat{y}_0,...,\widehat{y}_{n-1} y 0,...,y n1,为什么我们不计算
y ^ n \widehat{y}_{n} y n?,让我们来看看为什么?

k = n k=n k=n,首先计算下 w ‾ n = w = ( e 2 π i n ) n = e 2 π i = w 0 \overline{w}^{n}=w=(e^{\frac{2\pi i}{n}})^n=e^{2\pi i}=w^0 wn=w=(en2πi)n=e2πi=w0
同理, w n + 1 = w , w n + 2 = w 2 w^{n+1}=w,w^{n+2}=w^2 wn+1=w,wn+2=w2,所以,实际上我们实在计算重复的东西。另外,这也
解释了一定采样频率的信号,不可能含有比采样频率更高频率的信号。于是我们得出结论
y ‾ 0 , . . . , y ‾ n − 1 \overline{y}_0,...,\overline{y}_{n-1} y0,...,yn1就是我们需要的离散傅里叶变换。

Matrix Form

F n = ( 1 1 1 . . . 1 1 ω ω 2 . . . ω n − 1 1 ω 2 ω 4 . . . ω 2 ( n − 1 ) ⋮ ⋮ 1 ω n − 1 ω 2 ( n − 1 ) . . . ω ( n − 1 ) 2 ) F_n=\left( \begin{array}{ccccc} 1 & 1 & 1 & ... & 1 \\ 1 & \omega & \omega^2 & ... & \omega^{n-1}\\ 1 & \omega^2 & \omega^4 & ... & \omega^{2(n-1)} \\ \vdots & & & & \vdots \\ 1 & \omega^{n-1} & \omega^{2(n-1)} & ... & \omega^{(n-1)^2} \end{array} \right) Fn=11111ωω2ωn11ω2ω4ω2(n1)............1ωn1ω2(n1)ω(n1)2

那么离散傅里叶变换就直接转换为了矩阵算法。方便工程上的实践。

Example

我们来看看一个具体的例子。这个例子我是从别的文章中看到的。我们先来看看原始信号

f ( t ) = 2 + 3 2 c o s ( 150 π t + π 2 ) + 3 s i n ( 100 π t − π 6 ) f(t)=2+\frac{3}{2}cos(150\pi t+\frac{\pi}{2})+3sin(100\pi t-\frac{\pi}{6}) f(t)=2+23cos(150πt+2π)+3sin(100πt6π)
很明显,这个信号含有两种频率成分的信号,一种是 f 1 = 75 H z , f 2 = 50 H z f_1=75Hz,f_2=50Hz f1=75Hz,f2=50Hz.
我们的采样频 率取 f s = 512 H z f_s=512Hz fs=512Hz ,这样在 t ∈ [ 0 , 1 ) t\in [0, 1) t[0,1)
上我们就可以取512个数据。然后使用傅里叶
变换后。我们会得到512个 y ^ j \widehat{y}_j y j。注意我们得到的是复数。那么我们怎么根据
复数信息来计算频谱成分?

  • 数据中大部分都是0,有效的数据为 y ^ 0 = 1024 y ^ 50 = 665.108 + 384 i y ^ 75 = − 384 i y ^ 437 = 384 i y ^ 462 = 665.108 − 384 i \left. \begin{aligned} \widehat{y}_{0}&=&1024\\ \widehat{y}_{50}&=&665.108+384i\\ \widehat{y}_{75}&=&-384i\\ \widehat{y}_{437}&=&384i\\ \widehat{y}_{462}&=&665.108 -384i \end{aligned} \right. y 0y 50y 75y 437y 462=====1024665.108+384i384i384i665.108384i

  • 那么我们如何才能够从离散傅里叶变换中找出找出频率成分和相位,还有我们的常
    数项?

    1. 注意我们是将整个采样区间映射到了 0 , 2 l 0,2l 0,2l上,而我们一般采用的是 − l , l -l,l l,l上。
      所以根据我另外一篇文章傅里叶变换中提到的变换方法可以得。

      n ∗ α − λ = y ^ − 50 = 665.108 − 384 i n*\alpha_{-\lambda}=\widehat{y}_{-50}=665.108-384i nαλ=y 50=665.108384i
      n ∗ α − λ = y ^ − 75 = − 384 i n*\alpha_{-\lambda}=\widehat{y}_{-75}=-384i nαλ=y 75=384i

    2. 我们来利用公式
      n ∗ α λ = 1 2 π f ^ ( λ ) = a λ − i b λ 2 n*\alpha_{\lambda}=\frac{1}{\sqrt{2\pi}}\widehat{f}(\lambda)=\frac{a_{\lambda}-ib_{\lambda}}{2} nαλ=2π 1f (λ)=2aλibλ
      n ∗ α − λ = 1 2 π f ^ ( − λ ) = a λ + i b λ 2 n*\alpha_{-\lambda}=\frac{1}{\sqrt{2\pi}}\widehat{f}(-\lambda)=\frac{a_{\lambda}+ib_{\lambda}}{2} nαλ=2π 1f (λ)=2aλ+ibλ

    3. n ∗ a 50 = 2 ∗ 665.108 , n ∗ b 50 = − 2 ∗ 384 , n ∗ a 75 = 0 , n ∗ b 75 = − 2 ∗ 384 n*a_{50}=2*665.108,n*b_{50}=-2*384,n*a_{75}=0,n*b_{75}=-2*384 na50=2665.108,nb50=2384,na75=0,nb75=2384
      也就是说,我们离散傅里叶变换之后,发现有两个频率的信号.一个是 50 H z 50Hz 50Hz一个是 75 H z 75Hz 75Hz.

    4. 计算 a 0 a_0 a0,其中l是什么?是半周期。而我们的采样频率是 n = 512 n=512 n=512。也就是说,
      y ^ k / n ≈ α k ≈ 1 n ∑ j = 0 n − 1 y j w ‾ j k \widehat{y}_{k}/n\approx\alpha_k\approx \frac{1}{n}\sum_{j=0}^{n-1}y_j \overline{w}^{jk} y k/nαkn1j=0n1yjwjk
      y ^ 0 / 512 = 1024 / 512 = α 0 = a 0 2 = 2 \widehat{y}_0/512=1024/512=\alpha_0=\frac{a_0}{2}=2 y 0/512=1024/512=α0=2a0=2
      由此我们可以知道 a 0 = 4 a_0=4 a0=4,也就是说 f ( x ) f(x) f(x)的常数项为 a 0 2 = 2 \frac{a_0}{2}=2 2a0=2

    5. 50 H z 50Hz 50Hz 信号计算。

      回忆一下

      a 50 c o s ( 50 ∗ 2 π t ) + b 50 s i n ( 50 ∗ 2 π t ) a_{50}cos(50*2\pi t)+b_{50}sin(50*2\pi t) a50cos(502πt)+b50sin(502πt)

      A 50 = ( 2 × 665.108 / 512 ) 2 + ( − 2 × 384 / 512 ) 2 = 3 A_{50}=\sqrt{(2\times 665.108/512)^2+(-2\times 384/512)^2}=3 A50=(2×665.108/512)2+(2×384/512)2 =3
      φ = a r c t a n ( − 384 / 665.108 ) = − π 6 \varphi = arctan(-384/665.108)= -\frac{\pi}{6} φ=arctan(384/665.108)=6π

      也就是说, 50 H z 50Hz 50Hz的信号为。

      3 s i n ( 100 π t − π 6 ) 3sin(100\pi t-\frac{\pi}{6}) 3sin(100πt6π)

    6. 同理 75 H z 75Hz 75Hz的信号量为

      3 2 c o s ( 150 π t + π 2 ) \frac{3}{2}cos(150\pi t+\frac{\pi}{2}) 23cos(150πt+2π)

The End

最后,我们可以看到,离散傅里叶变换,实际上就是在傅里叶变换的基础上,使用了离散
的信号来计算。本身没有什么特别的地方。只要懂得如何计算就行。还有一点儿就是,大
家一定要记住,复数只是为了更方便计算。我们的具体计算中并没有利用复数计算的便利
性。这是我们忽略的,读者实际上自己思考一下就能明白,利用复数,可以很快的计算出
相位和幅值。至此,我们完成了傅里叶级数,傅里叶变换,离散傅里叶变换的文章。希望
能够给读者带来一些启示。因为我的能力有限。肯定有很多地方写得不好或者是错误的。,还望你们帮忙
指出。我一定,进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值