OFDM循环前缀及其作用(矩阵视角解释)

这篇具有很好参考价值的文章主要介绍了OFDM循环前缀及其作用(矩阵视角解释)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OFDM循环前缀及其作用——矩阵视角解释

读者在阅读这篇博客之前,建议先阅读和掌握我之前写的另一篇博客循环卷积和线性卷积(矩阵视角)。

考虑一个时不变的宽带信号模型:
y [ m ] = ∑ l = 0 L − 1 h l x [ m − l ] + w [ m ] (1) y[m] = \sum_{l=0}^{L-1} h_l x[m - l] + w[m] \tag{1} y[m]=l=0L1hlx[ml]+w[m](1)

如果不考虑噪声 w w w的话,式(1)可以看作是信道向量 h = [ h 0 , ⋯   , h L − 1 ] ∈ C L × 1 \boldsymbol h=[h_0,\cdots,h_{L-1}] \in \mathbb C^{L \times 1} h=[h0,,hL1]CL×1与信号向量 x = [ x 0 , ⋯   , x N − 1 ] ∈ C N × 1 \boldsymbol x=[x_0,\cdots,x_{N-1}] \in \mathbb C^{N \times 1} x=[x0,,xN1]CN×1的线性卷积。我们知道正弦函数是线性时不变系统的特征函数,注意这只在无穷维空间中成立,而实际中遇到的问题维度是有限的,所以不可避免地引入了符号间干扰(ISI)。

为了解决宽带通信系统中出现的ISI问题,学者引入了循环前缀(Prefix)的概念,下面我们将具体解释。

首先,如果不考虑循环前缀,我们把式(1)中的卷积部分写为矩阵形式,即
h T ∗ x T = h T [ x 0 x 1 ⋯ x N − 1 0 ⋯     0 0 x 0 x 1 ⋯ x N − 1 ⋯ 0 0 0 ⋱    ⋯    ⋱ ⋯ 0 0 0 0 x 0 x 1 ⋯ x N − 1 ] ∈ C 1 × ( N + L − 1 ) (2) \begin{aligned} & \boldsymbol h^T * \boldsymbol x^T \\ &= \boldsymbol h^T \left[ \begin{matrix} x_0& x_1& \cdots& \begin{matrix} x_{N-1}& 0& \cdots& \ \ \ 0\\ \end{matrix}\\ 0& x_0& x_1& \begin{matrix} \cdots& x_{N-1}& \cdots& 0\\ \end{matrix}\\ 0& 0& \ddots& \begin{matrix} \ \ \cdots& \,\, \ddots& \cdots& 0\\ \end{matrix}\\ 0& 0& 0& \begin{matrix} x_0& x_1& \cdots& x_{N-1}\\ \end{matrix}\\ \end{matrix} \right] \in \mathbb C^{1 \times (N+L-1)} \end{aligned} \tag{2} hTxT=hTx0000x1x000x10xN10   0xN10  0x0x1xN1C1×(N+L1)(2)

考虑循环前缀,循环前缀的长度与 L L L(信道tap的数量,若延时拓展为 T d T_d Td,信号带宽为 W W W,则 L = T d / W L=T_d/W L=Td/W)相关,具体大小为 L − 1 L-1 L1,定义加入循环前缀后的信号向量为
x ′ = [ x N − L + 1 , x N − L + 2 , ⋯   , x N − 1 , x 0 , x 1 , ⋯ x N − 1 ] T = [ x N − L + 1 , x N − L + 2 , ⋯   , x N − 1 ⏟  Added prefix in the head with length  L − 1 , x ] T ∈ C N + L − 1 (3) \begin{aligned} \boldsymbol x^{\prime} &= [x_{N-L+1}, x_{N-L+2}, \cdots, x_{N-1}, x_0, x_1, \cdots x_{N-1}]^T \\ &= [\underset{{\text{ Added prefix in the head with length } L-1 }} {\underbrace{ x_{N-L+1}, x_{N-L+2}, \cdots, x_{N-1}}}, \boldsymbol x]^T \in \mathbb C^{N+L-1} \end{aligned} \tag{3} x=[xNL+1,xNL+2,xN1,x0,x1,xN1]T=[ Added prefix in the head with length L1 xNL+1,xNL+2,xN1,x]TCN+L1(3)

加入循环前缀后,把 x ′ \boldsymbol x^{\prime} x代入到式(1)中的 x \boldsymbol x x,我们可以写出类似(2)的矩阵表达式:
h T ∗ x ′   T = h T [ x N − L + 1 ⋯ x N − 1 x 0 x 1 ⋯ x N − 1 0 ⋯ 0 0 x N − L + 1 ⋯ x N − 1 x 0 x 1 ⋯ ⋱ ⋱ 0 ⋮ ⋱ ⋱ ⋱ x N − 1 ⋱ x 1 ⋯ ⋱ ⋮ 0 ⋯ 0 x N − L + 1 ⋯ x N − 1 x 0 x 1 ⋯ x N − 1 ] (4) \begin{aligned} & \boldsymbol h^T * \boldsymbol x^{\prime \ T} \\ & = \boldsymbol h^T \left[ \begin{matrix}{} x_{N-L+1}& \cdots& x_{N-1}& x_0& x_1& \cdots& x_{N-1}& 0& \cdots& 0\\ 0& x_{N-L+1}& \cdots& x_{N-1}& x_0& x_1& \cdots& \ddots& \ddots& 0\\ \vdots& \ddots& \ddots& \ddots& x_{N-1}& \ddots& x_1& \cdots& \ddots& \vdots\\ 0& \cdots& 0& x_{N-L+1}& \cdots& x_{N-1}& x_0& x_1& \cdots& x_{N-1}\\ \end{matrix} \right] \end{aligned} \tag{4} hTx T=hTxNL+100xNL+1xN10x0xN1xNL+1x1x0xN1x1xN1xN1x1x00x100xN1(4)

我们将上式出现的矩阵做区分,如下图所示,可以发现中间部分是一个循环矩阵(Circulant Matrix),对应着循环卷积,因此我们得出结论:循环前缀可以将线性卷积转化为循环卷积
OFDM循环前缀及其作用(矩阵视角解释)
因此,在加入循环前缀后,我们可以等效出循环卷积,为了保持循环卷积维度的一致性,我们对 h \boldsymbol h h做扩展,令
h ′ = [ h 0 , ⋯   , h L − 1 , 0 , ⋯   , 0 ] ∈ C N × 1 \boldsymbol h^{\prime} = [h_0, \cdots, h_{L-1}, 0, \cdots, 0] \in \mathbb C^{N \times 1} h=[h0,,hL1,0,,0]CN×1

我们令
C = [ h 0 h 1 h 2 ⋯ h L − 2 h L − 1 0 0 ⋯ 0 0 h 0 h 1 h 2 ⋱ h L − 2 h L − 1 0 ⋱ 0 0 0 h 0 h 1 h 2 ⋱ h L − 2 h L − 1 ⋱ ⋮ ⋮ ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ 0 0 ⋯ 0 0 h 0 h 1 h 2 ⋯ h L − 2 h L − 1 h L − 1 0 ⋯ 0 0 h 0 h 1 h 2 ⋯ h L − 2 h L − 2 h L − 1 0 0 ⋱ 0 h 0 h 1 ⋱ ⋮ h L − 3 h L − 2 h L − 1 0 0 ⋱ 0 h 0 ⋱ h 2 ⋮ ⋱ h L − 2 ⋱ ⋱ ⋱ ⋱ ⋱ ⋱ h 1 h 1 ⋯ h L − 3 h L − 2 h L − 1 0 0 ⋯ 0 h 0 ] ∈ C N × N \boldsymbol C = \left[ \begin{matrix}{} h_0& h_1& h_2& \cdots& h_{L-2}& h_{L-1}& 0& 0& \cdots& 0\\ 0& h_0& h_1& h_2& \ddots& h_{L-2}& h_{L-1}& 0& \ddots& 0\\ 0& 0& h_0& h_1& h_2& \ddots& h_{L-2}& h_{L-1}& \ddots& \vdots\\ \vdots& \ddots& \ddots& \ddots& \ddots& \ddots& \ddots& \ddots& \ddots& 0\\ 0& \cdots& 0& 0& h_0& h_1& h_2& \cdots& h_{L-2}& h_{L-1}\\ h_{L-1}& 0& \cdots& 0& 0& h_0& h_1& h_2& \cdots& h_{L-2}\\ h_{L-2}& h_{L-1}& 0& 0& \ddots& 0& h_0& h_1& \ddots& \vdots\\ h_{L-3}& h_{L-2}& h_{L-1}& 0& 0& \ddots& 0& h_0& \ddots& h_2\\ \vdots& \ddots& h_{L-2}& \ddots& \ddots& \ddots& \ddots& \ddots& \ddots& h_1\\ h_1& \cdots& h_{L-3}& h_{L-2}& h_{L-1}& 0& 0& \cdots& 0& h_0\\ \end{matrix} \right] \in \mathbb C^{N \times N} C=h0000hL1hL2hL3h1h1h000hL1hL2h2h1h000hL1hL2hL3h2h10000hL2hL2h2h000hL1hL1hL2h1h0000hL1hL2h2h1h00000hL1h2h1h0hL20000hL1hL2h2h1h0CN×N

可以得到, h ′ \boldsymbol h^{\prime} h x \boldsymbol x x的循环卷积
h ′   T ⊗ x T = h ′   T [ x 0 x 1 ⋯ x N − 1 x N − 1 x 0 ⋱ x N − 2 ⋮ ⋱ ⋱ x 1 x N − L + 1 ⋯ x N − 1 x 0 ⋮ ⋮ ⋮ ⋮ ] = [ h 0 , ⋯   , h L − 1 , 0 , ⋯   , 0 ] [ x 0 x 1 ⋯ x N − 1 x N − 1 x 0 ⋱ x N − 2 ⋮ ⋱ ⋱ x 1 x N − L + 1 ⋯ x N − 1 x 0 ⋮ ⋮ ⋮ ⋮ ] = x T C \begin{aligned} & \boldsymbol h^{\prime \ T} \otimes \boldsymbol x^T \\ &= \boldsymbol h^{\prime \ T} \left[ \begin{matrix}{} x_0& x_1& \cdots& x_{N-1}\\ x_{N-1}& x_0& \ddots& x_{N-2}\\ \vdots& \ddots& \ddots& x_1\\ x_{N-L+1}& \cdots& x_{N-1}& x_0\\ \vdots& \vdots& \vdots& \vdots\\ \end{matrix} \right] \\ & = [h_0, \cdots, h_{L-1}, 0, \cdots, 0] \left[ \begin{matrix}{} x_0& x_1& \cdots& x_{N-1}\\ x_{N-1}& x_0& \ddots& x_{N-2}\\ \vdots& \ddots& \ddots& x_1\\ x_{N-L+1}& \cdots& x_{N-1}& x_0\\ \vdots& \vdots& \vdots& \vdots\\ \end{matrix} \right] \\ & =\boldsymbol x^T \boldsymbol C \end{aligned} h TxT=h Tx0xN1xNL+1x1x0xN1xN1xN2x1x0=[h0,,hL1,0,,0]x0xN1xNL+1x1x0xN1xN1xN2x1x0=xTC

那么就有
h ′   T ⊗ x T = x T C \boldsymbol h^{\prime \ T} \otimes \boldsymbol x^T = \boldsymbol x^T \boldsymbol C h TxT=xTC

又因为矩阵 C \boldsymbol C C是循环阵,基于另一篇博客另一篇博客循环卷积和线性卷积(矩阵视角),我们可以对 C \boldsymbol C C做谱分解
C = F Λ F − 1 \boldsymbol C = \boldsymbol F \boldsymbol \Lambda \boldsymbol F^{-1} C=FΛF1

其中 F \boldsymbol F F为DFT矩阵, Λ \boldsymbol \Lambda Λ为对角阵(对角线元素一般为复数)。令接收信号为 y ∈ C N \boldsymbol y \in \mathbb C^{N} yCN,那么 y \boldsymbol y y可以表示为
y T = x T C = x T F Λ F − 1 \boldsymbol y^T = \boldsymbol x^T \boldsymbol C = \boldsymbol x^T \boldsymbol F \boldsymbol \Lambda \boldsymbol F^{-1} yT=xTC=xTFΛF1

转化成列向量形式为,因为 F T = F \boldsymbol F^T = \boldsymbol F FT=F,所以
y = F − 1 Λ F x ⇒ r = F y = Λ F F − 1 d = Λ d \begin{aligned} &\boldsymbol y = \boldsymbol F^{-1} \boldsymbol \Lambda \boldsymbol F \boldsymbol x \\ & \Rightarrow \boldsymbol r = \boldsymbol F \boldsymbol y = \boldsymbol \Lambda^{} \boldsymbol F \boldsymbol F^{-1} d = \boldsymbol \Lambda^{} \boldsymbol d \end{aligned} y=F1ΛFxr=Fy=ΛFF1d=Λd

其中 r = F y \boldsymbol r = \boldsymbol F \boldsymbol y r=Fy表示将接收到的时域信号 y \boldsymbol y y转换到频域上, x = F − 1 d \boldsymbol x = \boldsymbol F^{-1} \boldsymbol d x=F1d表示将发送的频域信号 d \boldsymbol d d转换到时域上。信号的变换过程如下图所示,频域上的数据 d \boldsymbol d d经过IDFT变换转换为时域信号 x \boldsymbol x x,再依据式(3)加入循环前缀,经过信道(线性时不变系统)得到接收信号 y ′ \boldsymbol y^{\prime} y,随后在接收端移除前缀,将剩余的信号 y \boldsymbol y y经过DFT变换转换到频域信号 r \boldsymbol r r

OFDM循环前缀及其作用(矩阵视角解释)
注意到,上述中间过程都是在时域上操作,如果把时域操作看作是黑匣子,只考虑收发两端的频域信号,那么问题在频域上就可以大大简化,如下图所示

OFDM循环前缀及其作用(矩阵视角解释)

从频域上看,引入循环前缀后,因为矩阵 Λ \boldsymbol \Lambda Λ是对角阵,所以消除了符号间干扰(ISI),发送符号与接收符号之间可以一一对应,即
r n = h ~ n d n + w n r_n = \tilde h_n d_n + w_n rn=h~ndn+wn

其中 h ~ n \tilde h_n h~n为第 n n n个子载波上的信道系数,不同的子载波对应不同的信道系数,体现了宽带通信系统中出现的频率选择性衰落。对上式的一种解释是,OFDM把宽带通信拆分成了多个并行的窄带通信(并行的多个子信道),信号并行地在各个窄带上传输。

小结

OFDM引入循环前缀扩充了原本信号向量与信道向量(注意区分这里的信道向量强调采样后的多径,而不是多天线)进行线性卷积的维度,在更高维度下,我们发现部分卷积结果可以直接用循环卷积表征(由式4可以看出),因此我们认为:循环前缀的引入可以将线性卷积转化为循环卷积。转化为循环卷积后,我们可以借助循环矩阵来实现循环卷积,又因为循环矩阵的特征分解为 F Λ F − 1 \boldsymbol F \boldsymbol \Lambda \boldsymbol F^{-1} FΛF1,其中 F \boldsymbol F F为DFT矩阵,根据下面的式子
y = F − 1 Λ F x ⇒ r = F y = Λ F F − 1 d = Λ d \begin{aligned} &\boldsymbol y = \boldsymbol F^{-1} \boldsymbol \Lambda \boldsymbol F \boldsymbol x \\ & \Rightarrow \boldsymbol r = \boldsymbol F \boldsymbol y = \boldsymbol \Lambda^{} \boldsymbol F \boldsymbol F^{-1} d = \boldsymbol \Lambda^{} \boldsymbol d \end{aligned} y=F1ΛFxr=Fy=ΛFF1d=Λd

可以在频域上消除符号间干扰(ISI)。文章来源地址https://www.toymoban.com/news/detail-404467.html

到了这里,关于OFDM循环前缀及其作用(矩阵视角解释)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 二维矩阵的前缀和+子矩阵的和-java

    二维矩阵的前缀和,我们可以通过求前缀和来把求二维矩阵的求某一块的和,从时间复杂度O(n^2)变成O(1)常数级,大大降低了时间复杂度 文章目录 前言 一、二维矩阵的前缀和应该怎么做? 1.引入一个二维数组 2.二维前缀和矩阵数组 3.推出二维矩阵前缀和的公式计算 3.1 代码如

    2024年03月27日
    浏览(101)
  • 前缀和——1314. 矩阵区域和

    题目链接:1314. 矩阵区域和 - 力扣(LeetCode) 给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和: i - k = r = i + k, j - k = c = j + k 且 (r, c) 在矩阵内。 示例 1: 示例 2: 提示: m == mat.length n == mat[i].le

    2024年02月03日
    浏览(31)
  • 统计子矩阵(前缀和+双指针)

    给定一个 N × M 的矩阵A,请你统计有多少个子矩阵(最小 1 × 1,最大 N × M) 满足: 子矩阵中所有数的和不超过给定的整数K? 输入格式 第一行包含三个整数N, M 和K. 之后 N 行每行包含 M 个整数,代表矩阵A. 30%的测试数据:1≤N,M≤20; 70%的测试数据:1≤N,M≤100; 100%的测试数据

    2024年02月04日
    浏览(27)
  • 子矩阵的和(二维前缀和)

    上一篇文章介绍了一维前缀和,也就是一个数组的前 n 项和,这篇文章来介绍一下什么是二维前缀和。 含义 一维的是前 n 项的和,那么二维的情况下,表示的则是与左上角形成的矩形和。 怎么求 一维的递推关系式是 s[i] = s[i - 1] + a[i]; ,我们根据含义来思考二维的递推关系

    2024年02月08日
    浏览(41)
  • C++前缀和算法:构造乘积矩阵

    C++算法:前缀和基础 给你一个下标从 0 开始、大小为 n * m 的二维整数矩阵 grid ,定义一个下标从 0 开始、大小为 n * m 的的二维矩阵 p。如果满足以下条件,则称 p 为 grid 的 乘积矩阵 : 对于每个元素 p[i][j] ,它的值等于除了 grid[i][j] 外所有元素的乘积。乘积对 12345 取余数。

    2024年02月08日
    浏览(46)
  • 796. 子矩阵的和(二维前缀和)

    796. 子矩阵的和 - AcWing题库   1.暴力搜索(搜索时间复杂度为O(n2),很多时候会超时) 2. 前缀和(左上角(二维)前缀和):本题特殊在不是直接求前n个数的和,而是求矩阵中某个元素左上角所以数的和(包括该元素自己),利用左上角前缀和的运算求子矩阵和。 3.在求左上

    2024年02月06日
    浏览(36)
  • npm 命令及其详细解释

    npm init 用途:用于初始化一个新的 Node.js 项目,并生成 package.json 文件。 详解:该命令会引导您填写项目的基本信息,如项目名称、版本、描述等,并创建 package.json 文件以保存这些信息。 npm install package 用途:用于安装指定的 Node.js 包。 详解:执行该命令将会下载并安装指

    2024年04月15日
    浏览(33)
  • 蓝桥杯-统计子矩阵(前缀和+双指针)

      给定一个 N × M 的矩阵 A , 请你统计有多少个子矩阵 (最小 1×1, 最大 N × M ) 满足子矩阵中所有数的和不超过给定的整数 K ? 输入格式   第一行包含三个整数 , N , M 和 K .   之后 N 行每行包含 M 个整数, 代表矩阵 A . 输出格式   一个整数代表答案。 样例输入 样例输出

    2024年02月05日
    浏览(38)
  • C++ 二维前缀和 子矩阵的和

    输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2 ,表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n,m,q 。 接下来 n 行,每行包含 m 个整数,表示整数矩阵。 接下来

    2024年02月21日
    浏览(51)
  • 二维前缀和公式 AcWing 796. 子矩阵的和

    记住两个公式就行 不知道算难还是算简单,公式就是代码里面写的那样,完完全全公式,没有任何其他东西

    2024年02月19日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包