傅里叶变换
一、傅里叶级数
傅里叶级数是对于连续周期的信号,可以拆分为一组适当的正余弦曲线组合而成。设周期为2l的连续函数f(x),其傅里叶级数为下:
f
(
t
)
=
a
0
2
+
∑
n
=
1
∞
(
a
n
cos
(
n
π
l
x
+
b
n
sin
n
π
l
x
)
f(t) = \frac{a_0}{2}+\sum_{n=1}^{\infty}(a_n\cos{(\frac{n\pi}{l}x}+b_n\sin{\frac{n\pi}{l}x})
f(t)=2a0+n=1∑∞(ancos(lnπx+bnsinlnπx)
其中它的欧拉-傅里叶系数公式为:
a
n
=
1
l
∫
−
l
l
f
(
x
)
cos
n
π
l
x
d
x
a_n=\frac{1}{l}\int_{-l}^{l}f(x)\cos{\frac{n\pi}{l}xdx}
an=l1∫−llf(x)coslnπxdx
b
n
=
1
l
∫
−
l
l
f
(
x
)
sin
n
π
l
x
d
x
b_n=\frac{1}{l}\int_{-l}^{l}f(x)\sin{\frac{n\pi}{l}xdx}
bn=l1∫−llf(x)sinlnπxdx
傅里叶级数如图所示:
可以看出,傅里叶级数的频域是离散非周期。
这里,不同频率的正弦波我们称为频率分量。 如果我们把第一个频率最低的频率分量看作“1”,我们就有了构建频域的最基本单元。对于我们最常见的有理数轴,数字“1”就是有理数轴的基本单元。时域的基本单元就是“1秒”,如果我们将一个角频率为w的正弦波cos(wt)看作基础,那么频域的基本单元就是w。
有了“1”,还要有“0”才能构成世界,那么频域的“0”是什么呢?cos(0t)就是一个周期无限长的正弦波,也就是一条直线!所以在频域,0频率也被称为直流分量,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。
复数形式的傅里叶级数
欧拉公式:
e
i
x
=
cos
x
+
i
sin
x
e^{ix} = \cos{x}+i\sin{x}
eix=cosx+isinx
根据欧拉公式,有:
cos
n
π
l
x
=
1
2
(
e
i
n
π
l
x
+
e
−
i
n
π
l
x
)
\cos{\frac{n\pi}{l}x} = \frac{1}{2}(e^{i\frac{n\pi}{l}x} + e^{-i\frac{n\pi}{l}x})
coslnπx=21(eilnπx+e−ilnπx)
sin n π l x = − i 2 ( e i n π l x − e − i n π l x ) \sin{\frac{n\pi}{l}x} = -\frac{i}{2}(e^{i\frac{n\pi}{l}x} - e^{-i\frac{n\pi}{l}x}) sinlnπx=−2i(eilnπx−e−ilnπx)
于是函数f(x)的傅里叶级数可以表示为:
f
(
x
)
=
a
0
2
+
∑
n
=
1
∞
(
a
n
e
i
n
π
l
x
+
e
−
i
n
π
l
x
2
−
i
b
n
e
i
n
π
l
x
−
e
−
i
n
π
l
x
2
)
f(x)=\frac{a_0}{2}+\sum_{n=1}^{\infty}(a_n\frac{e^{i\frac{n\pi}{l}x} + e^{-i\frac{n\pi}{l}x}}{2}-ib_n\frac{e^{i\frac{n\pi}{l}x} - e^{-i\frac{n\pi}{l}x}}{2})
f(x)=2a0+n=1∑∞(an2eilnπx+e−ilnπx−ibn2eilnπx−e−ilnπx)
= a 0 2 + ∑ n = 1 ∞ ( a n − i b n 2 e i n π l x + a n + i b n 2 e − i n π l x ) =\frac{a_0}{2}+\sum_{n=1}^{\infty}(\frac{a_n-ib_n}{2}e^{i\frac{n\pi}{l}x} +\frac{a_n+ib_n}{2}e^{-i\frac{n\pi}{l}x}) =2a0+n=1∑∞(2an−ibneilnπx+2an+ibne−ilnπx)
记:
c
n
=
a
n
−
i
b
n
2
,
c
0
=
a
0
2
,
c
−
n
=
a
n
+
i
b
n
2
c_n= \frac{a_n-ib_n}{2},\qquad c_0=\frac{a_0}{2},\qquad c_{-n}=\frac{a_n+ib_n}{2}
cn=2an−ibn,c0=2a0,c−n=2an+ibn
则上面级数可写成:
f
(
x
)
=
∑
n
=
−
∞
∞
c
n
e
i
n
π
l
x
f(x) = \sum_{n=-\infty}^{\infty}c_ne^{i\frac{n\pi}{l}x}
f(x)=n=−∞∑∞cneilnπx
第一种:
c
0
=
a
0
2
=
1
2
l
∫
−
l
l
f
(
x
)
d
x
c_0=\frac{a_0}{2}=\frac{1}{2l}\int_{-l}^{l}f(x)dx\\
c0=2a0=2l1∫−llf(x)dx
第二种:
c
n
=
a
n
−
i
b
n
2
=
1
2
l
∫
−
l
l
f
(
x
)
(
cos
n
π
l
x
−
i
sin
n
π
l
x
)
d
x
=
1
2
l
∫
−
l
l
f
(
x
)
e
−
i
n
π
l
x
d
x
c_n=\frac{a_n-ib_n}{2}\\ \qquad \qquad \qquad \qquad \qquad \qquad =\frac{1}{2l}\int_{-l}^{l}f(x)(\cos{\frac{n\pi}{l}x-i\sin{\frac{n\pi}{l}x}})dx\\ \qquad \qquad =\frac{1}{2l}\int_{-l}^{l}f(x)e^{-i\frac{n\pi}{l}x}dx
cn=2an−ibn=2l1∫−llf(x)(coslnπx−isinlnπx)dx=2l1∫−llf(x)e−ilnπxdx
第三种:
c
−
n
=
a
n
+
i
b
n
2
=
1
2
l
∫
−
l
l
f
(
x
)
(
cos
n
π
l
x
+
i
sin
n
π
l
x
)
d
x
=
1
2
l
∫
−
l
l
f
(
x
)
e
i
n
π
l
x
d
x
c_{-n}=\frac{a_n+ib_n}{2}\\ \qquad \qquad \qquad \qquad \qquad \qquad =\frac{1}{2l}\int_{-l}^{l}f(x)(\cos{\frac{n\pi}{l}x+i\sin{\frac{n\pi}{l}x}})dx\\ \qquad \qquad =\frac{1}{2l}\int_{-l}^{l}f(x)e^{i\frac{n\pi}{l}x}dx
c−n=2an+ibn=2l1∫−llf(x)(coslnπx+isinlnπx)dx=2l1∫−llf(x)eilnπxdx
上面假设n=1,2,3……。,当n表示整数时,可以将三种公式整合为:
c
n
=
1
2
l
∫
−
l
l
f
(
x
)
e
−
i
n
π
l
x
d
x
c_n=\frac{1}{2l}\int_{-l}^{l}f(x)e^{-i\frac{n\pi}{l}x}dx
cn=2l1∫−llf(x)e−ilnπxdx
二、傅里叶变换
一般,傅里叶变换指的是连续傅里叶变换。其时域的原始信号是连续非周期的,频域是连续非周期的。
连续形式的傅里叶变换其实是傅里叶级数的推广,因为积分其实是一种极限形式的求和算子。
其数学表达式为:
1)时域转换为频域
F
(
ω
)
=
∫
−
∞
∞
f
(
t
)
e
−
i
ω
t
d
t
F(\omega) =\int_{-\infty}^{\infty}f(t)e^{-i\omega t}dt
F(ω)=∫−∞∞f(t)e−iωtdt
2)频域转换为时域
f
(
t
)
=
1
2
π
∫
−
∞
∞
F
(
ω
)
e
i
ω
t
d
ω
f(t) =\frac{1}{2\pi}\int_{-\infty}^{\infty}F(\omega)e^{i\omega t}d\omega
f(t)=2π1∫−∞∞F(ω)eiωtdω
三、离散时间傅里叶变换
离散时间傅里叶变换(DTFT)是时域离散非周期,频域连续周期。由采样定理知,序列可以看作在满足采样定理的条件下对连续信号进行采样得到。
对于连续傅里叶变换,在离散傅里叶变换中:
时间间隔:
d
t
−
>
Δ
t
当前时间位置:
t
−
>
n
Δ
t
积分变为求和:
∫
−
>
∑
时间间隔:dt->\Delta t\\ 当前时间位置:t->n \Delta t\\ 积分变为求和:\int -> \sum
时间间隔:dt−>Δt当前时间位置:t−>nΔt积分变为求和:∫−>∑
所以DTFT的时域转换为频域公式为:
X
(
w
)
=
∑
n
=
−
∞
∞
x
[
n
Δ
t
]
e
−
i
w
n
Δ
t
Δ
t
X(w) = \sum_{n=-\infty}^{\infty}x[n\Delta t]e^{-iwn\Delta t}\Delta t
X(w)=n=−∞∑∞x[nΔt]e−iwnΔtΔt
将时域间隔单位归一化后(Δ t 取1),得到:
X
(
w
)
=
∑
n
=
−
∞
∞
x
[
n
]
e
−
i
w
n
X(w) = \sum_{n=-\infty}^{\infty}x[n]e^{-iwn}
X(w)=n=−∞∑∞x[n]e−iwn
上式是将连续傅里叶变换中的时域信号进行离散化后得到,称离散时间傅里叶变换。
但是,DTFT仍未达到便于数字系统处理的目的:
- 时域序列的长度仍然是无限长的
- 信号在频域仍然是连续的
四、离散傅里叶变换
离散时间傅里叶变换(DTFT)是时域离散周期,频域离散周期。
实际上,对DTFT而言,其频域变换结果是以2π为周期的连续周期函数。为此,对时域信号在频域内以2π/N为间隔对DFTF的变换结果进行频域取样。把2π分为N-1段,即有N个点,第k个点为:
w
−
>
k
∗
2
π
N
w->k*\frac{2\pi}{N}
w−>k∗N2π
截取一个频域周期0<= k <= N-1。
DTFT中的x[n]是无限长的,现在把它限制在有限长0 <= n <= N-1,综上,有:
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
e
−
i
2
π
N
k
n
,
0
<
=
k
<
=
N
−
1
X[k] = \sum_{n=0}^{N-1}x[n]e^{-i\frac{2\pi}{N}kn},\qquad\qquad 0<=k<=N-1
X[k]=n=0∑N−1x[n]e−iN2πkn,0<=k<=N−1
x [ n ] = 1 N ∑ k = 0 N − 1 X ( k ) e i 2 π N k n , 0 < = k < = N − 1 x[n] = \frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{i\frac{2\pi}{N}kn},\qquad\qquad 0<=k<=N-1 x[n]=N1k=0∑N−1X(k)eiN2πkn,0<=k<=N−1
对转换后的频域,通过欧拉公式,拆分为实部和虚部。
- 欧拉公式:
e i x = cos x + i sin x e − i 2 π N k n = cos ( − n N 2 k π ) + i sin ( − n N 2 k π ) = cos ( n N 2 k π ) − i sin ( n N 2 k π ) e^{ix} = \cos{x}+i\sin{x} \\ e^{-i\frac{2\pi}{N}kn} = \cos{(-\frac{n}{N}2k\pi)+i\sin{(-\frac{n}{N}2k\pi)}}\\ \qquad=\cos{(\frac{n}{N}2k\pi)-i\sin{(\frac{n}{N}2k\pi)}} eix=cosx+isinxe−iN2πkn=cos(−Nn2kπ)+isin(−Nn2kπ)=cos(Nn2kπ)−isin(Nn2kπ)
- 实部:
X [ k ] = ∑ n = 0 N − 1 x [ n ] cos ( n N 2 k π ) 0 < = k < = N − 1 X[k]=\sum_{n=0}^{N-1}x[n]\cos{(\frac{n}{N}2k\pi)} \qquad\qquad 0<=k<=N-1 X[k]=n=0∑N−1x[n]cos(Nn2kπ)0<=k<=N−1
- 虚部:
X [ k ] = ∑ n = 0 N − 1 − x [ n ] sin ( n N 2 k π ) 0 < = k < = N − 1 X[k]=\sum_{n=0}^{N-1}-x[n]\sin{(\frac{n}{N}2k\pi)} \qquad\qquad 0<=k<=N-1 X[k]=n=0∑N−1−x[n]sin(Nn2kπ)0<=k<=N−1
五、总结
可以观察到:除了截取周期的DFT,计算公式带积分的是非周期的,计算公式带累加符号的是周期的。
循环卷积与卷积定理
一、DFT的矩阵表示
假设有离散序列x,长度为N。用X表示该离散傅里叶变换。X的第k个元素表示为:
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
e
−
i
2
π
N
k
n
,
0
<
=
k
<
=
N
−
1
X[k] = \sum_{n=0}^{N-1}x[n]e^{-i\frac{2\pi}{N}kn},\qquad\qquad 0<=k<=N-1
X[k]=n=0∑N−1x[n]e−iN2πkn,0<=k<=N−1
令
ω
=
e
−
i
2
π
N
\omega = e^{-i\frac{2\pi}{N}}
ω=e−iN2π
则上式可以表示为:
X
[
k
]
=
∑
n
=
0
N
−
1
x
[
n
]
ω
(
k
)
(
n
)
X[k] = \sum_{n=0}^{N-1}x[n]\omega^{(k)(n)}
X[k]=n=0∑N−1x[n]ω(k)(n)
接下来用矩阵表示上式,使得式子更加简洁易懂。
X
=
[
X
[
0
]
X
[
1
]
X
[
2
]
.
.
.
X
[
N
−
1
]
]
=
[
1
1
1
…
1
1
ω
1
⋅
1
ω
1
⋅
2
…
ω
1
⋅
(
N
−
1
)
1
ω
2
⋅
1
ω
2
⋅
2
…
ω
2
⋅
(
N
−
1
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
ω
(
N
−
1
)
⋅
1
ω
(
N
−
1
)
⋅
2
…
ω
(
N
−
1
)
⋅
(
N
−
1
)
]
[
x
[
0
]
x
[
1
]
x
[
2
]
.
.
.
x
[
N
−
1
]
]
X = \left[ \begin{matrix} X[0]\\ X[1]\\ X[2]\\ .\\ .\\ .\\ X[N-1] \end{matrix} \right] =\left[ \begin{matrix} 1&1&1&…&1\\ 1&\omega^{1\cdot1}&\omega^{1\cdot2}&…&\omega^{1\cdot(N-1)}\\ 1&\omega^{2\cdot1}&\omega^{2\cdot2}&…&\omega^{2\cdot(N-1)}\\ .&.&.&.&.\\ .&.&.&.&.\\ .&.&.&.&.\\ 1&\omega^{(N-1)\cdot1}&\omega^{(N-1)\cdot2}&…&\omega^{(N-1)\cdot(N-1)}\\ \end{matrix} \right] \left[ \begin{matrix} x[0]\\ x[1]\\ x[2]\\ .\\ .\\ .\\ x[N-1] \end{matrix} \right]
X=
X[0]X[1]X[2]...X[N−1]
=
111...11ω1⋅1ω2⋅1...ω(N−1)⋅11ω1⋅2ω2⋅2...ω(N−1)⋅2………...…1ω1⋅(N−1)ω2⋅(N−1)...ω(N−1)⋅(N−1)
x[0]x[1]x[2]...x[N−1]
由此可得
X
=
F
x
X=Fx
X=Fx
F被称作为傅里叶矩阵。
二、循环卷积定理
卷积的物理意义可以理解为:一个函数(如:单位响应)在另一个函数(如:输入信号)上的加权叠加。对于线性时不变系统,如果知道该系统的单位响应,那么将单位响应和输入信号求卷积,就相当于把输入信号的各个时间点的单位响应加权叠加,就直接得到了输出信号。
设系统输入为x(n),单位响应为h(n),则卷积的结果表示为:
y
(
n
)
=
∑
−
∞
∞
x
(
i
)
h
(
n
−
i
)
=
x
(
n
)
∗
h
(
n
)
y(n) = \sum_{-\infty}^{\infty}x(i)h(n-i) = x(n)*h(n)
y(n)=−∞∑∞x(i)h(n−i)=x(n)∗h(n)
其中星号*表示卷积
离散傅里叶变换与卷积定理这俩基本绑一起了,谈到了离散傅里叶变换,就不能不说一下卷积定理。提到卷积定理,大家都会想到一句话:“时域卷积的傅里叶变换等于频域点积”。这个对于连续函数来说没有错,但是用在离散序列上在思想上很容易出错。因为,对于离散序列来说,卷积定理应该称作循环卷积定理,也就是:两个离散序列的循环卷积的傅里叶变换等于这两个序列在频域的点积。
F
(
f
1
(
t
)
∗
f
2
(
t
)
)
=
F
q
(
ω
)
⋅
F
2
(
ω
)
F(f_1(t)*f_2(t)) = F_q(\omega)\cdot F_2(\omega)
F(f1(t)∗f2(t))=Fq(ω)⋅F2(ω)
三、线性卷积
y ( n ) = ∑ − ∞ ∞ x ( i ) h ( n − i ) = x ( n ) ∗ h ( n ) y(n) = \sum_{-\infty}^{\infty}x(i)h(n-i) = x(n)*h(n) y(n)=−∞∑∞x(i)h(n−i)=x(n)∗h(n)
上式既被称为卷积和,也被称为线性卷积。线性卷积表示一个信号通过一个系统的输出,这个信号可以是无限长的,也可以是有限长的,可以的离散的也可以是连续的。
计算方法:
被卷积序列x[n]与h [n]的序列长度分别为M和N,则卷积得到的y[n] 序列长为L=M+N−1,计算线性卷积的简单方法为进位保留法。
四、循环卷积
设序列h(n)和x(n)的长度分别N和M,h(n)与x(n)的L点循环卷积定义为:
y
c
(
n
)
=
[
∑
m
=
0
L
−
1
h
(
m
)
x
(
(
n
−
m
)
)
L
]
R
L
(
n
)
y_c(n) = [\sum_{m=0}^{L-1}h(m)x((n-m))_L]R_L(n)
yc(n)=[m=0∑L−1h(m)x((n−m))L]RL(n)
式中,L称为循环卷积区间长度,L>=MAX[N,M],h(n)与x(n)补零,使得n和m的变化区间均是[0,L-1]。
序列的循环移位:
设x(n)为有限长序列,长度为M,M<L,则x(n)的循环移位定义为:
y
(
n
)
=
x
(
(
n
+
m
)
)
N
R
N
(
n
)
y(n) = x((n+m))_NR_N(n)
y(n)=x((n+m))NRN(n)
该式表明,将x(n)以N为周期进行周期延拓得到x((n))_N,再将x((n))_N左移m得到x((n+m))_N,最后取x((n+m))_N的主值序列得到有限长序列x(n)的循环移位序列y(n)。y(n)是长度为N的有限长序列。
循环卷积的计算:
1)利用线性卷积,循环卷积区间长度为4
2)利用循环矩阵计算循环卷积
h(n)与x(n)补零到循环区域长度L,按照循环卷积计算公式,将输入数据x(n)反转为x(-n),从第一行开始左移一位,构建循环矩阵。最后和单位响应相乘得到循环卷积。
具体示意图如下:
3)利用FFT计算循环卷积
之前的循环卷积都是在时域进行计算。可以通过循环卷积定理,两个离散序列的循环卷积的傅里叶变换等于这两个序列在频域的点积。
步骤:
- h(n)和x(n)补零扩充到长度L
- 对h(n)和x(n)进行DFT,得到H(k)和X(k)
- H(k)和X(k)进行点积,计算出Y_c(k)
- 对Y_c(k)进行IDFT,得到循环卷积y_c(n)
五、总结
设卷积序列x[n]]与h[n]的序列长度分别为M和N,则卷积得到的y[n]序列长为L
1)当L<N+M-1时,循环卷积是线性卷积长度为L的混叠;
2)当L=N+M-1时,循环卷积=线性卷积;
3)当L>N+M-1时,循环卷积是线性卷积末尾补L-(N+M-1)个零;