傅里叶变换理解

  1. 向量正交
  2. 正交函数3
    1. 三角函数集合
    2. 指数函数集合
      1. 信号角度理解
  3. 傅里叶变换
    1. 离散傅里叶变换DFT6
  4. 拉式变换
  5. z变换
  6. 引用

用正交函数理解傅里叶变换,详细推到请看4

向量正交

向量正交:两个向量内积为0

一个向量可以分解到一组正交基上(坐标系)

向量a在向量b上的投影长度

如果$b$是坐标轴上的单位向量或者方向沿着坐标轴方向,则$c$就是对应的坐标

正交函数3

函数正交:两个函数内积为0,这是向量内积的推广,向量的元素足够多推广到积分

引入函数内积,在向量内积的基础上变成了积分(对应点的内积),这里是复变函数内积

一个函数f在另一个函数g上的投影

一个函数可以分解到一组完备正交函数集合上,三角函数集合和指数函数集合都是完备正交函数集合

三角函数集合

三角函数分解如下, 正交性证明可以通过和差化积变换

其中

指数函数集合

连续函数正交基: $e^{jwnt}, n \in \mathbb{Z}$,n为整数
周期为$T_1$函数指数函数分解如下

则对应的函数分解为

信号角度理解

1个周期为T的信号$g=g_1+g_2$,其中周期信号$g_1, g_2$周期分别为$T_1,T_2$,那么信号$g$的周期$T$为$T_1,T_2$最小公倍数,证明如下
$g_1(x+T_1)=g_1(x),g_2(x+T_2)=g_2(x)$
$g_3(x+T)=g_3(x)$
即有

因为$g_1,g_2$无关,所以需要分别相等,即$g_1(x+T)=g_1(x)$,$g_2(x+T)=g_2(x)$,所以有$T=n_1T_1=n_2T_2$,可以扩展到n的信号的组成
所以信号的基频率为$f=\frac{2\pi}{T}$, 其余信号的频率为基频的倍数$f_1=n_1f,f_2=n_2f$, 即周期为T的信号对应指数正交基为$e^{jn\frac{2\pi}{T}t}$(每个基对应基频倍数的三角函数)
即有

其中$w=\frac{2\pi}{T}$, 非三角函数信号如方波分解也是基频倍数频率的三角函数
对于非周期信号可以认为${T} \to \infty$,对应$w$连续

傅里叶变换

周期无穷大,$\mathop {\lim }\limits_{ {T_1} \to \infty } {1 \over { {T_1} }} = {1 \over {2\pi } }dw$. 加和变成了积分,时间从0开始到无穷大,如下式所示,内层就是傅里叶变换,外层就是反变换

窗函数1表达式如下

时域窗函数傅里叶变换

频域窗函数傅里叶反变换

从这里可以看出时域窗函数傅里叶变换是Sinc function2, 频域窗函数傅里叶反变换也是

离散傅里叶变换DFT6

周期为N的离散信号构成1个N维欧几里得空间7$\mathbb{C}^N$, 空间中连个信号(元素)的内积定义为

$\mathbb{C}^N$上的一组正交基如下, 周期为N的信号自由度只有N,这里$k$的选择只有N个值,$k=N,k=0$对应$kw=k\frac{2\pi}{N}$对应的正交基相同

即对应的$e^{jkwn}$,连续信号是$e^{jkwt}$
正交性证明如下,使用等比数列求和公式即可证明

将信号$x$在正交基上分解得到

令$\hat{x}[k]=\langle x,e_k\rangle=\sum_{n=0}^{N-1}x[n]e^{-i\frac{2\pi}{N}kn}$,即离散傅里叶变换

同时离散傅里叶变换的逆变换为

另外一种解释,对于周期为$N$的信号$x$,分解如下, 对应自由度只有N,所以系数$k$只需要选择N个,再选即为重复

对应内部为离散傅里叶变换DFT,外部为IDFT
同样$k$可以选择为$m_1,m_2$,分别为0左右负和正数($m_1=-\frac{N}{2}, m_2=\frac{N}{2}$),距离0基本一致,对于非周期信号

上式推导对应$w=kw_1=k\frac{2\pi}{N}$,当$k=-\frac{N}{2}$对应$w=-\pi$

可以证明负频率和正频率对应的DFT幅值相同,即$|X(f)|=|X(-f)|$,展开得到实数部分和虚数部分即可证明,所以DFT对应直流分量不变,非直流分量则是两倍

使用python可以很方便绘制频谱图,注意这里有系数$\frac{1}{N}$,才是对应正交基上的投影分量.而且这里只需要绘制到采样频率的1/2即奈奎斯特频率

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import numpy as np
import matplotlib.pyplot as plt
from scipy.fft import fft, fftfreq

# 生成示例信号
# 采样率
sample_rate = 1000.0 # 1000 Hz
# 采样点数
N = 1000
# 时间向量
t = np.linspace(0.0, N / sample_rate, N, endpoint=False)
# 生成频率为50 Hz和120 Hz的信号
signal = 1 + 1 * np.sin(50.0 * 2.0 * np.pi * t) + 0.4 * np.sin(120.0 * 2.0 * np.pi * t)

# 计算FFT
yf = fft(signal)
# 计算频率
xf = fftfreq(N, 1 / sample_rate)
# 正频率
yf_posi = 1 / N * yf[: N // 2]
yf_posi[1:] *= 2
xf_posi = xf[: N // 2]

plt.subplots(2, 1, figsize=(12, 6), sharex="all")
# 双边频谱
plt.subplot(2, 1, 1)
plt.plot(xf, 1.0 / N * np.abs(yf))
plt.ylabel("Amplitude")
plt.grid()
# 仅绘制正频率部分
plt.subplot(2, 1, 2)
plt.plot(xf_posi, np.abs(yf_posi))
plt.grid()
plt.xlabel("Frequency (Hz)")
plt.ylabel("Amplitude")
plt.suptitle("Frequency Spectrum")
plt.show()

拉式变换

傅里叶变换要求时域绝对可积,为满足这个条件,在原函数前面乘一个指数衰减函数${e^{ - at}}$, $a$为满足收敛的任意实数。则傅里叶变换变成了

拉式变换是傅里叶变换的推广,傅里叶变换是拉式变换在虚轴上的投影。

z变换

连续时间傅里叶变换针对连续信号,拉式变换解决了函数不可积问题,针对离散信号,积分变成求和,傅里叶变换变换为$\sum_{n=-\infty}^{\infty} x[n] e^{-j \omega n}$同样函数需要满足绝对可和的条件,类似拉式变幻,这里乘${a^{ - n}}$,$a$为满足收敛的任意实数,则公式变为

$z = a{e^{j\omega }}$是极坐标形式复数,定义为离散信号的复频率。可以看出$z$是在复平面上是一个圆。傅里叶变换定义域在虚轴,$z$变换定义在圆上。

至于为什么$z$变换不像拉式变换那样乘${e^{ - an}}$的原因还不太理解,可以参考5中的回答. z变换对应的频率响应可以直接把$z$替换为$e^{jw}$, 对于傅里叶变换则是把$s$替换为$jw$

引用

1. https://en.wikipedia.org/wiki/Rectangular_function
2. https://en.wikipedia.org/wiki/Sinc_function
3. https://blog.csdn.net/Einstellung/article/details/77478203
4. 纯干货数学推导_傅里叶级数与傅里叶变换
5. https://www.zhihu.com/question/22085329/answer/103926934
6. https://zh.wikipedia.org/wiki/%E7%A6%BB%E6%95%A3%E5%82%85%E9%87%8C%E5%8F%B6%E5%8F%98%E6%8D%A2
7. https://zh.wikipedia.org/wiki/%E6%AC%A7%E5%87%A0%E9%87%8C%E5%BE%97%E7%A9%BA%E9%97%B4

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 yangbenbo@whu.edu.cn

文章标题:傅里叶变换理解

本文作者:杨本泊

发布时间:2019-11-30, 19:38:48

最后更新:2024-06-23, 21:53:29

原始链接:http://yangbenbo.github.io/2019/11/30/傅里叶变换理解/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录