打基础
傅里叶变换对:
FFT
快速傅立叶变化简称FFT,其实FFT就是DFT(离散傅立叶变化)的一种快速算法,通过时间抽取或频率抽取算法来加快变化过程。
数据由时域转换为频域的过程我们称为傅立叶转换,由于转换后的频域数据是不连续的,所以为离散傅立叶转换。其中转换后得到的频谱图中频率不为零且幅值最大的一般都是基波,也叫零次谐波。
离散傅里叶变换:
其中N为时域离散信号的点数,n为时域离散信号的编号(取值范围为0~N-1),m为频域信号的编号(取值范围为0~N-1),频域信号的点数也为N。因此离散傅里叶变换的输入为N个离散的点(时域信号),输出为N个离散的点(频域信号,频域信号的每个点都用一个复数表示)。
根据欧拉公式:
离散傅里叶变换可以写成如下形式:
IFFT
FFT变换是将信号从时域转换到频域,在时域看起来复杂的信号转换到频域看起来就方便容易了很多。但有时候也需要将频域信号转换到时域,所以这时需要用到IFFT变换。
其实IFFT的计算原理之一就是将频域(注意频域是复数)数据进行取共轭复数(虚部取反),然后再进行FFT变换,这样便将频域信号转换到时域。因为FFT变换的结果是复数,所以从频域进行FFT变换过来的结果也是复数,而此时只需取复数的实部,便是原时域信号(同时此复数的虚部已经比非常小了,就省略不要了)。
离散傅里叶反变换:
时域上的OFDM
OFDM的"O"代表着"正交",那么就先说说正交吧。
首先说说最简单的情况,sin(t)和sin(2t)是正交的【证明:sin(t)·sin(2t)在区间[0,2π]上的积分为0】,而正弦函数又是波的最直观描述,因此我们就以此作为介入点。我们用图形的方式来先理解一下正交性。
在下面的图示中,在[0,2π]的时长内,采用最易懂的幅度调制方式传送信号:sin(t)传送信号a,因此发送a·sin(t),sin(2t)传送信号b,因此发送b·sin(2t)。
其中,sin(t)和sin(2t)的用处是用来承载信号,是收发端预先规定好的信息,在本文中一律称为子载波;调制在子载波上的幅度信号a和b,才是需要发送的信息。因此在信道中传送的信号为a·sin(t)+b·sin(2t)。在接收端,分别对接收到的信号作关于sin(t)和sin(2t)的积分检测,就可以得到a和b了。
流程图:
这里其实有个隐含的条件,书中一般都没提到,就是作为承载信号的sin(t)和sin(2t),他们需要正交的话,其发送的时机是有严格限定的,即其0点的位置需要同步。这就是为什么说时延会影响载波的正交性,这也是为什么OFDM较难从时域上实现。
- 将sin(t)和sin(2t)扩展到更多的子载波序列{sin(2π·Δf·t),sin(2π·Δf·2t),sin(2π·Δf·3t),…,sin(2π·Δf·kt)} (例如k=16,256,1024等),应该是很好理解的事情。其中,2π是常量;Δf是事先选好的载频间隔,也是常量。1t,2t,3t,…,kt保证了正弦波序列的正交性。
- 将cos(t)也引入。容易证明,cos(t)与sin(t)是正交的,也与整个sin(kt)的正交族相正交。同样,cos(kt)也与整个sin(kt)的正交族相正交。因此发射序列扩展到{sin(2π·Δf·t),sin(2π·Δf·2t),sin(2π·Δf·3t),…,sin(2π·Δf·kt),cos(2π·Δf·t),cos(2π·Δf·2t),cos(2π·Δf·3t),…,cos(2π·Δf·kt)}也就顺理成章了。
- 经过前两步的扩充,选好了2组正交序列sin(kt)和cos(kt),这只是传输的"介质"。真正要传输的信息还需要调制在这些载波上,即sin(t),sin(2t),…,sin(kt)分别幅度调制a1,a2,…,ak信号,cos(t),cos(2t),…,cos(kt)分别幅度调制b1,b2,…,bk信号。这2n组互相正交的信号同时发送出去,在空间上会叠加出怎样的波形呢?做简单的加法如下:
f
(
t
)
=
a
1
⋅
s
i
n
(
2
π
⋅
Δ
f
⋅
t
)
+
a
2
⋅
s
i
n
(
2
π
⋅
Δ
f
⋅
2
t
)
+
a
3
⋅
s
i
n
(
2
π
⋅
Δ
f
⋅
3
t
)
+
.
.
.
a
k
⋅
s
i
n
(
2
π
⋅
Δ
f
⋅
k
t
)
+
b
1
⋅
c
o
s
(
2
π
⋅
Δ
f
⋅
t
)
+
b
2
⋅
c
o
s
(
2
π
⋅
Δ
f
⋅
2
t
)
+
b
3
⋅
c
o
s
(
2
π
⋅
Δ
f
⋅
3
t
)
+
.
.
.
b
k
⋅
c
o
s
(
2
π
⋅
Δ
f
⋅
k
t
)
f(t) = a_1·sin(2π·Δf·t) + a_2·sin(2π·Δf·2t) + a_3·sin(2π·Δf·3t) + ... a_k·sin(2π·Δf·kt) + b_1·cos(2π·Δf·t) + b_2·cos(2π·Δf·2t) + b_3·cos(2π·Δf·3t) + ... b_k·cos(2π·Δf·kt)
f(t)=a1⋅sin(2π⋅Δf⋅t)+a2⋅sin(2π⋅Δf⋅2t)+a3⋅sin(2π⋅Δf⋅3t)+...ak⋅sin(2π⋅Δf⋅kt)+b1⋅cos(2π⋅Δf⋅t)+b2⋅cos(2π⋅Δf⋅2t)+b3⋅cos(2π⋅Δf⋅3t)+...bk⋅cos(2π⋅Δf⋅kt)
=
∑
a
k
⋅
s
i
n
(
2
π
⋅
Δ
f
⋅
k
t
)
+
∑
b
k
⋅
c
o
s
(
2
π
⋅
Δ
f
⋅
k
t
)
= ∑a_k·sin(2π·Δf·kt) + ∑b_k·cos(2π·Δf·kt)
=∑ak⋅sin(2π⋅Δf⋅kt)+∑bk⋅cos(2π⋅Δf⋅kt)
为了方便进行数学处理,上式有复数表达形式如下:
f
(
t
)
=
∑
F
k
⋅
e
(
j
⋅
2
π
⋅
Δ
f
⋅
k
t
)
f(t) = ∑F_k·e^{(j·2π·Δf·kt)}
f(t)=∑Fk⋅e(j⋅2π⋅Δf⋅kt)
上面的公式可以这样看:每个子载波序列都在发送自己的信号,互相交叠在空中,最终在接收端看到的信号就是f(t)。接收端收到杂糅信号f(t)后,再在每个子载波上分别作相乘后积分的操作,就可以取出每个子载波分别承载的信号了。
上面的公式就是傅里叶级数。如果将t离散化,那么就是离散傅立叶变换。所以才有OFDM以FFT来实现的故事。将在下面的章节进行更多的描述。
遵循古老的传统,F表示频域,f表示时域,所以可以从公式2中看出,每个子载波上面调制的幅度,就是频域信息。类似的说法是:OFDM传输的是频域信号。这种说法有些别扭,但是很多教程或文章会使用这样的说明方式,就看读者如何理解了。如果纯粹从公式或者子载波来看,这种说法其实也是很直接的阐述了。
时域上的OFDM系统图:
频域上的OFDM
第一章节时域上的讨论开始于OFDM中的"O";本章节频域上我们从"FDM"开始。
先图例一个常规FDM的系统图:
常规FDM,两路信号频谱之间有间隔,互相不干扰
为了更好的利用系统带宽,子载波的间距可以尽量靠近些。
靠得很近的FDM,实际中考虑到硬件实现,解调第一路信号时,已经很难完全去除第二路信号的影响了(电路的实现毕竟不能像剪刀裁纸一样利落),两路信号互相之间可能已经产生干扰了。
还能再近些吗?可以的。这就是OFDM的来历啊,近到完全等同于奈奎斯特带宽(后面有详述),使频带的利用率达到了理论上的最大值。
继续靠近,间隔频率互相正交,因此频谱虽然有重叠,但是仍然是没有互相干扰的。神奇的OFDM:
频带利用率是码元速率1/T和带宽B(或者W)的比值。
理想情况下,低通信道频带利用率为2Baud/Hz;带通信道频带利用率在传输实数信号时为1Baud/Hz,传送复数信号时为2Baud/Hz(负频率和正频率都独立携带信号)。由于讨论低通信道时往往考虑的是实数信号,而讨论带通信道时通常考虑的是复数信号,因此可以简单认为:理想情况下,信道的频带利用率为2Baud/Hz。
OFDM的子载波间隔最低能达到奈奎斯特带宽,也就是说(在不考虑最旁边的两个子载波情况下),OFDM达到了理想信道的频带利用率。
OFDM正交子载波,载频间距为奈奎斯特带宽,保证了最大的频带利用率
OFDM符号时长的倒数也就等于子载波间的频率间隔。
用IFFT实现OFDM
f
(
t
)
=
∑
F
k
⋅
e
(
j
⋅
2
π
⋅
Δ
f
⋅
k
t
)
f(t) = ∑F_k·e^{(j·2π·Δf·kt)}
f(t)=∑Fk⋅e(j⋅2π⋅Δf⋅kt)经过时域离散后变为:
f
(
n
)
=
1
/
N
⋅
∑
F
k
⋅
e
(
j
⋅
2
π
⋅
k
⋅
n
/
N
)
f(n) = 1/N·∑F_k·e^{(j·2π·k·n/N)}
f(n)=1/N⋅∑Fk⋅e(j⋅2π⋅k⋅n/N)
两式右侧所表达的物理意义是相同的,均代表了不同子载波
e
(
j
⋅
2
π
⋅
k
⋅
n
/
N
)
e^{(j·2π·k·n/N)}
e(j⋅2π⋅k⋅n/N)发送各自的信号
F
k
F_k
Fk,然后在时域上的叠加形成
f
(
n
)
f(n)
f(n),只不过现在叠加出来的时域不是连续波形,而是离散的时序抽样点。
另一种更容易,更可爱的理解方式是:在一个OFDM symbol的时长T内,用N个子载波各自发送一个信号F(k)(k∈[1,N]),等效于直接在时域上连续发送
f
(
n
)
f(n)
f(n)(n∈[1,N])N个信号,每个信号发送T/N的时长。
在IFFT实现OFDM中,发送端添加了IFFT模块、接收端添加了FFT模块。IFFT模块的功能相当于说:别麻烦发送N个子载波信号了,我直接算出你们在空中会叠加成啥样子吧;FFT模块的功能相当于说:别用老式的积分方法来去除其余的正交子载波了,我帮你一次把N个携带信号全算出来吧。就是这样,IFFT实现OFDM的系统用"数学的方法",在发送端计算信号的叠加波形,在接收端去除正交子载波,从而大大简化了系统的复杂度。
关于负频率
http://home.eeworld.com.cn/my/space-uid-355576-blogid-114050.html
参考资料
https://zhuanlan.zhihu.com/p/365872805
https://blog.csdn.net/madongchunqiu/article/details/18614233/