MIMO OFDM 常用信号检测算法
MIMO OFDM 系统检测算法
1. 前言
MIMO的空分复用技术可以使得系统在系统带宽和发射带宽不变的情况下容易地获得空间分集增益和信道的容量增益。OFDM技术采用多个正交的子载波并行传输数据,使得每一路上的数据速率大大降低,并且加入了时间保护间隔,因此具有较强的抗多径干扰和频率选择性衰落的能力。MIMO和OFDM技术将是未来无线通信中极具竞争力的技术。信号检测是MIMO-OFDM系统的关键任务之一。目前针对MIMO-OFDM系统中信号检测技术的研究主要集中在线性检测、非线性检测和最优检测三个方面。
MIMO-OFDM系统的检测可以简单的看成是已知信道矩阵 \(\bf{\hat{H}}\)(根据信道估计得到的)和加性高斯白噪声 \(\bf{v}\) 的统计信息,根据接收端接收到的数据 \(\bf{y}\),对接收信号进行处理,得到发送符号 \(\bf{\hat{x}}\) 的估值。
2. 线性检测算法
2.1 破零(ZF)检测算法
ZF检测算法就是根据信道矩阵的逆来检测数据,信道矩阵的逆可以表示为:
{{{({{\bf{H}}^H}{\bf{H}})}^{ - 1}}{{\bf{H}}^H},{\rm{ }}{N_t} < {N_r}} \\
{{{\bf{H}}^H}{{({{\bf{H}}^H}{\bf{H}})}^{ - 1}},{\rm{ }}{N_t} > {N_r}} \\
{{{\bf{H}}^{ - 1}},{\rm{ }}{N_t} = {N_r}} \\
\end{array}} \right.\]
这里 \(N_t\) 和 \(N_r\) 分别表示发送天线数和接收天线数。那么,ZF检测可以描述成:
\]
在发送符号的星座图中寻找与 \({{\bf{d}}_{ZF}}\) 最接近的点(量化处理),就可以得到发送符号的估值 \(\bf{\hat{x}}\)。
2.2 线性最小均方误差(LMMSE)检测算法
发射符号 \(\bf{x}\) 与其估计值 \(\bf{\hat{x}}\) 的均方误差可以表示为: \(MSE = E[{({\bf{x}} - {\bf{\hat x}})^H}({\bf{x}} - {\bf{\hat x}})]\),LMMSE检测的目标就是最小化MSE。根据线性MMSE准则,令 \({{\bf{G}}_{LMSE}} = {({{\bf{H}}^H}{\bf{H}} + \rho {{\bf{I}}_{{N_t}}})^{ - 1}}{{\bf{H}}^H}{\bf{H}}\),这里 $\rho $ 表示信噪比的倒数,可得LMMSE检测可以描述为:
\]
经过量化处理之后即可得到 \(\bf{\hat{x}}\)。
3 非线性检测算法
干扰消除是非线性检测中的关键技术,它的作用是去除天线间的干扰,从而提高系统检测的性能。其基本原理是:将先前步骤中已经检测出的 \({{{\bf{\hat x}}}_i}(i = 1,2, \cdots ,K)\) 所产生的接收信号当成干扰,从接收向量中去除,即计算 ${\bf{y}} - \sum\limits_{i = 1}^K {{{{\bf{\hat x}}}_{\bf{i}}}{{\bf{h}}_i}} $。该计算去除了信道矩阵中的相应列,使系统变成了具有 \(N_t-K\) 副发射天线、\(N_r\) 副接收天线的系统。这种技术类似于判决反馈均衡器(DFE),使余下的检测减少了干扰源,增加了天线的分集增益。
3.1 串行干扰消除
串行干扰消除采用串行的方式来消除干扰,即一次一个地将干扰从接收信号中去除.计算步骤:
- 1)选择某种线性检测算法检测出第一副天线发送符号估值 \({{{{\bf{\hat x}}}_1}}\),将该估值信号产生的干扰从接收信号 \(\bf{y}\) 减去,得到部分清理的信号 \({\bf{y}}(1) = {\bf{y}} - {{{\bf{\hat x}}}_1}{{\bf{h}}_1}\),此时系统变成 \({N_{t - 1}}\) 个发射天线和 \(N_r\) 个接收天线。
- 2)用线性检测得到第二副天线发送符号的估值 \({{{{\bf{\hat x}}}_2}}\),再将该估值信号产生的干扰从 \({\bf{y}}(1)\)中减去,得到部分清理的信号 \({\bf{y}}(2) = {\bf{y}}(1) - {{{\bf{\hat x}}}_2}{{\bf{h}}_2}\),此时系统就变成 \({N_{t - 2}}\) 个发射天线和 \(N_r\) 个接收天线。
- 3)依此类推,直至检测出所有的符号。
3.2 并行干扰消除
并行干扰消除采用并行的方式来消除天线间的干扰,其实现方法:首先选用一种线性检测方法初步检测出所有的发送符号估值 \({{{\bf{\hat x}}}_i}(i = 1,2, \cdots ,{N_t})\),然后针对每个发送符号消除其他符号产生的干扰,即做计算:\({{\bf{y}}_k} = {\bf{y}} - \sum\limits_{i = 1,i \ne k}^{{N_t}} {{{{\bf{\hat x}}}_i}{{\bf{h}}_i}}\),此时对每个发送天线而言,系统都变成了1根发射天线和 \(N_r\) 根接收天线,可以方便地进行检测处理。
3.3 QR分解
QR分解的主要思想是变换信道矩阵 \(\bf{H}\),避免矩阵的求逆,获得较低的计算复杂度。实现步骤:
- 1)对信道矩阵实行QR分解
{{{\bf{Q}}_1}} & {{{\bf{Q}}_2}} \\
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{\bf{R}} \\
{{{\bf{O}}_{{N_r} - {N_t},1}}} \\
\end{array}} \right]\]
其中 \(\left[ {\begin{array}{*{20}{c}}
{{{\bf{Q}}_1}} & {{{\bf{Q}}_2}} \\
\end{array}} \right]\) 是正交归一化的酉矩阵,满足 \({{\bf{Q}}^H}{\bf{Q}} = {\bf{I}}\),\({\bf{R}}\) 是 \({N_t} \times {N_t}\) 的上三角矩阵。
- 2)对接收信号 \(\bf{y}\) 计算
\]
上式表示成矩阵形式为:
{{d_{QR1}}} \\
{{d_{QR2}}} \\
\vdots \\
{{d_{QR{N_t}}}} \\
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{{r_{1,1}}} & {{r_{1,1}}} & \cdots & {{r_{1,{N_t}}}} \\
0 & {{r_{2,1}}} & \cdots & {{r_{2,{N_t}}}} \\
\vdots & \vdots & \ddots & \vdots \\
0 & \cdots & 0 & {{r_{{N_t},{N_t}}}} \\
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{x_1}} \\
{{x_2}} \\
\vdots \\
{{x_{{N_t}}}} \\
\end{array}} \right] + \left[ {\begin{array}{*{20}{c}}
{{z_1}} \\
{{z_2}} \\
\vdots \\
{{z_{{N_t}}}} \\
\end{array}} \right]\]
- 3)可以从 \({x_{{N_t}}}\) 开始逐层计算检测,由 \({d_{QR{N_t}}} = {r_{{N_t},{N_t}}}{x_{{N_t}}} + {z_{{N_t}}}\) 求出 \({{{\bf{\hat x}}}_{{N_t}}}\),再将 \({{{\bf{\hat x}}}_{{N_t}}}\)代入下一层检测,即由\({d_{QR{N_t} - 1}} = {r_{{N_t} - 1,{N_t} - 1}}{x_{{N_t} - 1}} + {r_{{N_t} - 1,{N_t}}}{{{\bf{\hat x}}}_{{N_t}}} + {z_{{N_t}}}\) 求出 \({{{\bf{\hat x}}}_{{N_t} - 1}}\)。
-4)以此类推,直至检测出所有的符号。
注意,QR分解只适用于 \({N_t} \le {N_r}\) 的场合。
4 最优检测算法
最优检测是指检测出的信号具有最高的分集增益和最接近于原始信号(例如,具有最低的比特差错率)。但是,要达到最优这一目的,要付出极高的计算代价。
4.1 最大似然检测(ML)算法
最大似然检测算法是公认的最优检测算法,它将接收信号对所有可能的发送符号域进行全局搜索,找到与接收信号距离最小(即最大似然ML)的发送符号作为原始的发送符号。其估值公式为:
\]
其中,\({\bf{\Omega }}\) 表示所有发送符号的星座集合。
由于ML算法的计算量非常大,难以应用在实际的通信系统中,所以只能牺牲部分性能,采用次优的检测算法,以简化计算。
4.2 球面解码算法
球面解码算法的设计目的是在略微降低 ML 检测性能的前提下,大幅度减少搜索所需的计算量。因此,球面解码算法(SPA)也是采用式(1)进行搜索,但搜索的范围限制在一个以接收矢量 \(\bf{y}\) 为圆心、\(r\) 为半径的超球面内。显然,超球面内最靠近接收矢量的点也是整个星座中最靠近接收矢量的点,所以SPA 能够达到类似于ML检测的最佳性能。而且,由于SPA的搜索空间减小,所以其计算量也相应地减少。由此,SPA归结为解决如何选择 \(r\) 的大小以及如何确定位于超球面内的点。SPA的具体步骤这里不详细描述。
参考文献
[1] 周健, 张冬. MIMO-OFDM系统中的信号检测算法(I)[J]. 南京工程学院学报(自然科学版), 2010.
更多精彩内容请关注订阅号优化与算法和加入QQ讨论群1032493483获取更多资料
往期精选:
MIMO OFDM 常用信号检测算法的更多相关文章
- DotNet常用排序算法总结
数据结构和算法对一个程序来说是至关重要的,现在介绍一下几种算法,在项目中较为常用的算法有:冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等7中算法. 现在介绍选择排序算法, ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- 转载部长一篇大作:常用排序算法之JavaScript实现
转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...
- 【学】常用hash算法的介绍
基本知识 Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- ACM 中常用的算法有哪些? 2014-08-21 21:15 40人阅读 评论(0) 收藏
ACM 中常用的算法有哪些?作者: 张俊Michael 网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以水题为主(就是没有任何算法, ...
- ACM 中常用的算法有哪些?
在网上看到别人ACM学习的心得,转载过来,源地址不记得了,当时是百度的.内容如下: 网络上流传的答案有很多,估计提问者也曾经去网上搜过.所以根据自己微薄的经验提点看法. 我ACM初期是训练编码能力,以 ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- 面试中常用排序算法实现(Java)
当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...
随机推荐
- 国产网络测试仪MiniSMB - 双击就可以直接编辑数据报文字段(如IP地址)
国产网络测试仪MiniSMB(www.minismb.com)是复刻smartbits的IP网络性能测试工具,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此以太 ...
- k8s二进制部署 - harbor安装
harbor安装 # 目录说明: # /opt/src : 源码.文件下载目录 # /opt/release : 各个版本软件存放位置 # /opt/apps : 各个软件当前版本的软链接 [root ...
- 微服务架构Day02-SpringBoot日志slf4j
日志框架 日志门面(接口,日志抽象层 ) 日志实现 JCL(Jakarta Commons Logging).slf4j(Simple Logging Facade for Java).jboss-l ...
- Redis 的缓存淘汰机制(Eviction)
本文从源码层面分析了 redis 的缓存淘汰机制,并在文章末尾描述使用 Java 实现的思路,以供参考. 相关配置 为了适配用作缓存的场景,redis 支持缓存淘汰(eviction)并提供相应的了配 ...
- WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
title: WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS date: 2020-03-20 10:43:00 categories: acm tags: [ ...
- 7A - Kalevitch and Chess
A. Kalevitch and Chess time limit per test 2 seconds memory limit per test 64 megabytes input standa ...
- HDU4578 Transformation(多标记线段树)题解
题意: 操作有:\(1\).区间都加\(a\):\(2\).区间都乘\(a\):\(3\).区间都重置成\(a\):\(4\).询问区间幂次和\(\sum_{i=l}^rnum[i]^p(p\in\{ ...
- Web 全栈开发 Redis 面试题
Web 全栈开发 Redis 面试题 Redis 大 key 问题 https://www.cnblogs.com/xgqfrms/p/13601959.html Redis 数据结构 Redis 初 ...
- Dart: 执行shell命令
1 创建包 >stagehand console-full 2 安装插件 process_run: ^0.10.1 3 编写 bin/main.dart ... import 'package: ...
- k8s部署mysql数据持久化
在这里我部署mysql的目的是为了后面将上一篇博客docker打包的el-admin镜像部署到k8s上,所以本文主要是部署mysql并实现持久化. 1.将我们的应用都部署到 el-admin 这个命名 ...