OFDM相关学习
OFDM相关学习
循环前缀相关
循环前缀(Cyclic Prefix,CP)的作用:避免符号间干扰和消除子载波间干扰,如何深入理解这个问题,主要从公式的角度进行推导和分析,再结合MATLAB仿真进行验证。
多径信道传输模型
考虑线性时不变系统:
$$
y(t)=h(t)*x(t)=\int h(t)x(t-\tau)d\tau\tag1
$$
其中,$x(t)$表示输入信号,$h(t)$表示信号冲激响应,$y(t)$表示接收信号。离散信号表达式为:
$$
y(n)=\sum_{l=0}^{L-1} h(l)x(n-l)\tag2
$$
上式为多径信道下的信号传输模型,其中$L$表示多径信道的阶数。
OFDM循环前缀的作用
对于OFDM信号而言,发射信号$x(n)$由 IFFT 运算和添加CP得到,其有效信号的表达式为(即IDFT的公式):
$$
x(n)=\frac{1}{\sqrt{N}}\sum_{k=0}^{N-1} X(k)e^{j2\pi \frac{nk}{N}},n=1,\dots,N,k=1,\dots,N
$$
式中,$X(k)$为第$k$个子载波上的发射信号,$N$为IFFT的点数(也是一个OFDM符号时域有效信号 $x(n)$的样点数目。
接下来,需要把式$(2)$中的卷积写成矩阵乘法的形式:
分析过程:假设$L$是多径的的数目,不失一般地,先考虑$y(0)$的表达式,然后利用数学归纳法,写出接收信号的矩阵表达。
$$
y(0)=\sum_{l=0}^{L-1}h(l)x(-l)=h(0)x(0)+h(1)x(-1)+\dots+h(L-1)x(-L+1)
$$
对于单个OFDM符号,CP长度为$N_{CP}$,则接收信号的矩阵表达式为:
$$
\begin{bmatrix}y(-N_{CP})\ \vdots\y(-1)\y(0)\y(1)\y(2)\ \vdots\y(N-2)\y(N-1)\end{bmatrix}=\begin{bmatrix}h(0)&0&0&0&0&0&0&0&0\ \vdots & \ddots&0&0&0&0&0&0&0\h(L-1)&\cdots&h(0)&0&0&0&0&0&0\0&h(L-1)&\cdots&h(0)&0&0&0&0&0\0&0&\ddots&\vdots&h(0)&0&0&0&0\0&0&0&h(L-1)&&h(0)&0&0&0\0&0&0&0&\ddots&&\ddots&0&0\0&0&0&0&0&\ddots&&h(0)&0\0&0&0&0&0&0&h(L-1)&\cdots&h(0)\end{bmatrix}\begin{bmatrix}x(-N_{CP})\\vdots\x(-1)\x(0)\x(1)\x(2)\\vdots\x(N-2)\x(N-1)\end{bmatrix}\tag4
$$
==CP的第一个作用:避免符号间干扰。==由于多径的作用,前一时刻的信号会对当前时刻的信号造成影响。因此,为了保证上一个OFDM不会对当前OFDM符号造成影响,CP的长度必须满足$N_{CP}\ge L$,上式$(4)$中,$N_{CP}= L$。(从两个方向考虑问题,物理意义直观理解,如果多径时延大于$N_{CP}$,接收信号将不全是一个OFDM符号的信息,会有下一个符号信息的干扰,导致后续处理分不开来;数学公式角度理解:上述矩阵成立的边界,即为$N_{CP}\ge L-1$,因为$x,y$这两个列向量长度有系统决定,是确定的形式,L的范围只能存在边界条件,即可得出结论)。
==CP 的第二个作用:消除子载波干扰==。下面进行推导。
循环前缀进一步理解(消除子载波干扰)
由CP的定义可知,$x(-1)=x(N-1),\dots,x(-N_{CP})=x(N-N_{CP})$。
![]()
接收端去掉CP,可以将上式$(4)$进行化简(即考虑$N_{CP}= L$的情况):
$$
\begin{bmatrix}y(0)\y(1)\y(2)\\vdots\y(N-2)\y(N-1)\end{bmatrix}=\begin{bmatrix}0&h(L-1)&\cdots&h(0)&0&0&0&0&0\0&0&\ddots&\vdots&h(0)&0&0&0&0\0&0&0&h(L-1)&&h(0)&0&0&0\0&0&0&0&\ddots&&\ddots&0&0\0&0&0&0&0&\ddots&&h(0)&0\0&0&0&0&0&0&h(L-1)&\cdots&h(0)\end{bmatrix}\begin{bmatrix}x(-N_{CP})\\vdots\x(-1)\x(0)\x(1)\x(2)\\vdots\x(N-2)\x(N-1)\end{bmatrix}\tag5
$$
利用CP的性质,可以进一步得到:
$$
\begin{bmatrix}y(0)\y(1)\y(2)\\vdots\y(N-2)\y(N-1)\end{bmatrix}=\begin{bmatrix}h(0)&0&0&0&h(L-1)&h(1)\\vdots&h(0)&0&0&0&h(L-1)\h(L-1)&&h(0)&0&0&0\0&\ddots&&\ddots&0&0\0&0&\ddots&&h(0)&0\0&0&0&h(L-1)&\cdots&h(0)\end{bmatrix}\begin{bmatrix}x(0)\x(1)\x(2)\\vdots\x(N-2)\x(N-1)\end{bmatrix}\tag6
$$
观察式$(5)$和$(6)$的$h$矩阵,其实质上将式$(5)$中信道矩阵的左上角元素,搬移到式$(6)$中信道矩阵的右上角,这两个等式完全等价,即CP-OFDM将线性**==卷积运算转换为了循环卷积运算==**。
实际上,时域线性卷积≠频域相乘,而是时域循环卷积=频域相乘,引入循环前缀,正好将线性卷积转到循环卷积。
$$
\mathbf{y}=\mathbf{Gx}\tag7
$$
其中,$\mathbf{G}\in \mathbb{C} ^{N\times N}$为时域信道矩阵。根据OFDM接收端的操作,需对接收信号进行FFT运算,可以得到频域信号形式,即
$$
\mathbf{r}=\mathbf{F}\mathbf{y}=\frac{1}{N}\mathbf{F}\mathbf{G}\mathbf{F}^{H}\mathbf{s}\tag8
$$
式中,$\mathbf{F}\in \mathbb{C} ^{N\times N}$表示傅里叶矩阵,性质:$\mathbf{F}\mathbf{F}^{H}=NI$,$\mathbf{s}=[X(1),\dots,X(N)]^T\in ^{N\times 1}$表示频域发射信号。
注意:式中$\mathbf{G}$是一个Toeplitz矩阵,具有循环移位特性。
定义 $\mathbf{H}=\frac{1}{N}\mathbf{F}\mathbf{G}\mathbf{F}^{H}$,利用 托普利兹矩阵_百度百科的性质,则 $\mathbf{H}$是一个对角阵,式 $(8)$可以表示为:
$$
\begin{bmatrix}r(0)\r(1)\r(2)\\vdots\r(N-1)\end{bmatrix}=\begin{bmatrix}H(0)\&\ddots\&&H(k)\&&&\ddots\&&&&H(N-1)\end{bmatrix}\begin{bmatrix}X(0)\\vdots\X(k)\\vdots\X(N-1)\end{bmatrix}\tag9
$$
式中,$H(k)$表示 $\mathbf{H}$的第$k$个对角线元素,从式 $(9)$可以看到,每一个子载波的接收信号与发射信号一一对应,且其他子载波的信号对当前子载波完全没有影响。也就是说,子载波之间不会产生任何干扰,即消除了子载波间干扰。OFDM结合循环前缀,可以使信道均衡、信号解调等在频域并行处理,大大降低了系统复杂度。
有两种说法:CP --> 实现OFDM的循环扩展(为了某种连续性)。
进一步地,分析OFDM频域与时域信道系数的关系,即$H$和$h$的关系:
解决这一问题,需要考虑矩阵的特征值和特征向量:
由$\mathbf{H}$是对角阵可知,$H(k)$是Toeplitz矩阵$\mathbf{G}$的特征值,相应的特征向量为 $\mathbf{F}^{H}$的第 $k$列。理由:$\mathbf{F}^H\mathbf{H}=\mathbf{G}\mathbf{F}^H$.(矩阵分析源头)
考虑矩阵两边的第$k$个列向量,可得$\mathbf{Gf}_k = H(k)\mathbf{f}_k$,其中$\mathbf{f}_k$是$\mathbf{F}^H$的第$k$列,也就是$\mathbf{F}$的第$k$行。这与特征值和特征向量的表达式相同。基于以上讨论,我们下面来说明如何计算$H(k)$。
定义:$W_N = e^{-\frac{j2\pi}{N}}$,$\mathbf{Gf}k = H(k)\mathbf{f}k$的等价形式,即
$$
\frac{1}{\sqrt{N}}\begin{bmatrix}p_0 & p_1 & p_2 & \cdots & p{N-1} \p{N-1} & p_0 & p_1 & \cdots & p_{N-2} \p_{N-2} & p_{N-1} & p_0 & \cdots & p_{N-3} \\vdots & \vdots & \vdots & \ddots & \vdots \p_1 & p_2 & p_3 & \cdots & p_0\end{bmatrix}\begin{bmatrix}W_N^{0} \W_N^{-k} \W_N^{-2k} \\vdots \W_N^{-(N-1)k}\end{bmatrix}=\frac{1}{\sqrt{N}}H(k)\begin{bmatrix}W_N^{0} \W_N^{-k} \W_N^{-2k} \\vdots \W_N^{-(N-1)k}\end{bmatrix}\tag{10}
$$
为了计算$H(k)$的表达式,我们观察式(6)和(10)中的Toeplitz矩阵$\mathbf{G}$和$\mathbf{P}$,有$\mathbf{P}{m,n} = p{(n-m)\mod N}$, $p_l = h_{(N-l)\mod N}$,其中$m, n, l = 0, 1, 2, \ldots, N-1$。
因此,式(10)等号左边:矩阵$\mathbf{P}$的第$(m+1)$行与IDFT矩阵第$k$列的内积有
$$
\frac{1}{\sqrt{N}} \sum_{n=0}^{N-1} p_{(n-m)N} W_N^{-nk} = \frac{1}{\sqrt{N}} W_N^{-mk} \sum{n=0}^{N-1} p_{(n-m)N} W_N^{-(n-m)N k} = \frac{1}{\sqrt{N}} W_N^{-mk} \sum{l=0}^{N-1} p_l W_N^{-lk}\tag{11}
$$
式中,第1个等号利用了性质$W_N^{-(n-m)k} = W_N^{-(n-m)N k}$(以$N$为周期的周期性)。为进一步计算式(11)的求和项,我们定义$H_k = \sum{l=0}^{N-1} p_l W_N^{-lk}$ ,即
$$
H_k = \sum{l=0}^{N-1} p_l W_N^{-lk} = \sum_{l=0}^{N-1} h_{(N-l)N} W_N^{-lk} = \sum{l=0}^{N-1} h_{(N-l)N} W_N^{(N-l)N k} = \sum{l’=0}^{N-1} h{l’} W_N^{l’k}\tag{12}
$$
式中,第3个等号利用了性质$W_N^{Nk} = 1$,$W_N^{(N-l)k} = W_N^{(N-l)_N k}$。
可以看到,频域信道系数$H_k$恰巧是时域信道系数$h_{l’}, l’ = 0, 1, \ldots, N-1$的傅里叶变换!
线性卷积和循环卷积的转换
参考书籍《Wireless Communication Systems in Matlab, Second Edition》
下面给出一个简单的MATLAB程序:
1 | clc; clear; close all; |
OFDM信号仿真部分代码
以下为一个OFDM误码率仿真示例:
1 | clc; clear; close all |





