主要内容

comm.SphereDecoder

使用球面解码器解码输入

描述

球面解码器系统对象™解码发送过来的符号NT天线采用球面译码算法。

使用球面解码器解码输入符号:

  1. 定义并设置球体解码器对象。看到建设

  2. 调用一步的属性来解码输入符号comm.SphereDecoder.的行为一步特定于工具箱中的每个对象。

请注意

从R2016b开始,而不是使用一步方法来执行System对象定义的操作,则可以使用参数调用该对象,就像调用函数一样。例如,Y = step(obj,x)而且Y = obj(x)请执行相同的操作。

建设

H = com . spheredecoder创建一个System对象,H.该对象使用球面译码算法为MIMO信道上的一组接收符号找到最大似然解NT发射天线和NR接收天线。

H = com . spheredecoder (的名字价值创建一个球体解码器对象,H,并将指定的属性名设置为指定的值。名称必须出现在单引号(")内。您可以以任意顺序指定多个名称-值对参数,如Name1、Value1、…、NameN、ValueN。

H = com . spheredecoder (星座BITTABLE创建一个球体解码器对象,H,将Constellation属性设置为星座,以及BitTable属性设置为BITTABLE

属性

星座

每个发射天线的信号星座

将星座指定为复杂列向量,其中包含传输位映射到的星座点。默认设置为平均功率为的QPSK星座1.向量的长度必须是2的幂。该物体假设每个发射天线使用相同的星座。

BitTable

用于每个星座点的位映射。

属性指定的符号的位映射星座属性指定为数值矩阵。默认为[0 0;0 1;1 0;1 (1),匹配默认值星座属性值。

矩阵大小必须为[ConstellationLength bitsPerSymbol]ConstellationLength的长度星座财产。bitsPerSymbol表示每个符号编码的比特数。

InitialRadius

解码算法的初始搜索半径。

指定解码算法的初始搜索半径为其中之一|ZF的解决方案.默认为

当您将此属性设置为时,对象将初始搜索半径设置为

当您将此属性设置为ZF的解决方案,对象将初始搜索半径设置为强制零解。该计算在解码时使用输入通道的伪逆。大型星座和/或天线数量可以从搜索半径的初始减小中受益。然而,在大多数情况下,的额外计算ZF的解决方案不会提供任何好处。

DecisionType

指定解码决策方法为任意一种|.默认为

当您将此属性设置为,解码器输出对数似然比(LLRs),或软位。

当您将此属性设置为,解码器将软llr转换为比特。硬决策输出逻辑数组遵循负LLR为0和所有其他值为1的映射。

方法

一步 使用球面译码算法解码接收到的符号
所有系统对象通用
释放

允许系统对象属性值更改

例子

全部折叠

使用16-QAM星座调制一组位。通过MIMO信道将信号作为两个并行流传输。使用具有完美通道知识的球体解码器解码。

指定调制顺序、传输比特数、Eb/No比和符号映射。

BPS = 4;<年代pan style="color:#228B22">每个符号的比特数%M = 2^bps;<年代pan style="color:#228B22">调制阶数nBits = 1e3*bps;Ebno = 10;symMap = [11 10 14 15 9 8 12 13 10 4 5 3 2 6 7];

生成并显示16-QAM调制器的符号映射qammod函数和自定义符号映射。

sym = qammod(symMap(1:M)',M,symMap,<年代pan style="color:#0000FF">...“UnitAveragePower”,真的,<年代pan style="color:#A020F0">“PlotConstellation”,真正的);

图中包含一个轴对象。标题为16-QAM, Custom Mapping, UnitAveragePower=true的axis对象包含19个类型为line, text的对象。

使用左位作为最高位(msb)将符号映射的十进制值转换为二进制位。的——- - - - - -个基点矩阵bitTable由球体解码器使用。

bitTable = int2bit(symMap,bps)';

创建一个2x2 MIMO通道系统对象PathGainsOutputPort设置为真正的使用路径增益作为信道估计。为确保结果的可重复性,请将对象设置为使用全局随机数流。

mimo = com . mimochannel (<年代pan style="color:#0000FF">...“PathGainsOutputPort”,真的,<年代pan style="color:#0000FF">...“RandomStream”,<年代pan style="color:#A020F0">“全球流”);

创建一个AWGN通道系统对象。

awgnChan = com . awgnchannel (<年代pan style="color:#A020F0">“EbNo”ebno,<年代pan style="color:#A020F0">“BitsPerSymbol”个基点);

创建一个球体解码器系统对象,使用硬判定解码处理比特。使用自定义位表和符号映射进行配置。

sphDec = com . spheredecoder (<年代pan style="color:#A020F0">“星座”信谊,<年代pan style="color:#0000FF">...“BitTable”bitTable,<年代pan style="color:#A020F0">“DecisionType”,<年代pan style="color:#A020F0">“硬”);

创建一个错误率系统对象。

berRate = com . errorrate;

设置全局随机数生成器种子。

rng (37)

生成随机数据流。

data = randi([0 1],nBits,1);

调制数据并将其重塑为两个流,以便与2x2 MIMO通道一起使用。

modData = qammod(data,M,symMap,<年代pan style="color:#0000FF">...“InputType”,<年代pan style="color:#A020F0">“一点”,<年代pan style="color:#A020F0">“UnitAveragePower”,真正的);modData =重塑(modData,[],2);

将调制数据通过MIMO衰落信道并添加AWGN。

[fadedSig, pathgain] = mimo(modData);rxSig = awgnChan(fadedSig);

解码接收信号使用pathGains作为一个完美的渠道估计。

decodedData = sphDec(rxSig,squeeze(pathgain));

将解码后的硬决策数据(逻辑矩阵)转换为双列向量,以便计算误差统计数据。计算并显示误码率和错误数。

dataOut = double(decodedData(:));errorStats = berRate(data,dataOut);errorStats (1:2)
ans =<年代pan class="emphasis">2×10.0380 - 152.0000

算法

本对象利用软输出Schnorr-Euchner球译码器(SESD)实现了一个软输出max-log后验概率(APP) MIMO检测器,实现方式为单树搜索(STS)树遍历。该算法假定所有发射天线的星座和位表相同。给定接收到的符号向量和估计的信道矩阵作为输入,算法输出传输比特的对数似然比(LLRs)。

该算法假设一个MIMO系统模型NT发射天线和NR接收天线NT同时发送符号,表示为:

y海关+n

在哪里y是接收到的符号,H为MIMO信道矩阵,年代传输的符号是矢量,和n是热噪声。

MIMO检测器寻求最大似然(ML)解,<年代pan class="inlineequation"> 年代 l ,使:

年代 l 参数 最小值 年代 o y H 年代 2

在哪里O复值星座是从哪个NT的元素年代是选择。

软检测还计算每个比特的对数似然比(LLR),作为每个比特估计可靠性的衡量标准。LLR的计算使用最大对数近似:

l x j b 最小值 年代 x j b 0 y H 年代 2 λ l 最小值 年代 x j b 1 y H 年代 2 λ j b l ¯

在哪里

  • lxj, b)是每个比特的LLR估计值。

  • x j b 是每个发送位,b的第Th位j象征。

  • x j b 0 而且<年代pan class="inlineequation"> x j b 1 向量符号的不相交集是否具有b的标签中的Th位jTh标量符号分别等于0和1。两个λ符号表示以范数平方计算的距离。,特别是:

    • λ l 是距离<年代pan class="inlineequation"> 年代 l

    • λ j b l ¯ 到反假设的距离,它表示的是的二进制补b的二进制标签中的第Th位j第Th项<年代pan class="inlineequation"> 年代 l ,即符号集的最小值<年代pan class="inlineequation"> x j b x j b l ¯ 的所有可能的向量b的第Th位j第Th项与相同的项相比是翻转的<年代pan class="inlineequation"> 年代 l

基于是否<年代pan class="inlineequation"> x j b x j b l 01,位的LLR估计值<年代pan class="inlineequation"> x j b 计算公式如下:

l x j b λ l λ j b l ¯ x j b l 0 λ j b l ¯ λ l x j b l 1

解码器的设计力求高效地找到<年代pan class="inlineequation"> 年代 l ,<年代pan class="inlineequation"> λ l ,<年代pan class="inlineequation"> λ j b l ¯

通过球面译码算法,可以将这种搜索转换为树搜索。为此,将通道矩阵分解为<年代pan class="inlineequation"> H R 通过QR分解。Left-multiplyingy通过H时,问题可重新表述为:

λ l 参数 最小值 年代 o y ¯ R 年代 2 λ j b l ¯ 年代 x j b x j b l ¯ 参数 最小值 y ¯ R 年代 2

利用这个重新表述的问题陈述,三角结构R可以用来安排一个树结构,使每个叶节点对应一个可能的年代向量和到树中节点的部分距离可以累积计算,加上父节点的部分距离。

在STS算法中<年代pan class="inlineequation"> λ l 而且<年代pan class="inlineequation"> λ j b l ¯ 度量标准是同时搜索的。目标是拥有一个包含度量的列表<年代pan class="inlineequation"> λ l ,连同相应的位序<年代pan class="inlineequation"> x l 还有衡量标准<年代pan class="inlineequation"> x j b x j b l 在所有的反假设中。只有当结果可以导致其中一个的更新时,才会搜索来自给定节点的子树<年代pan class="inlineequation"> λ l 或<年代pan class="inlineequation"> λ j b l ¯

STS算法流程可以总结为:

  1. 当到达一个叶节点时,发现一个新的ML假设<年代pan class="inlineequation"> d x < λ l ,所有<年代pan class="inlineequation"> λ j b l ¯ 的<年代pan class="inlineequation"> x j b x j b l ¯ 设置为<年代pan class="inlineequation"> λ l 这就变成了一个有价值的反假设。然后,<年代pan class="inlineequation"> λ l 设置为当前距离,dx).

  2. 如果<年代pan class="inlineequation"> d x λ l ,只有反假设需要检查。对所有j而且b的<年代pan class="inlineequation"> d x < λ l 而且<年代pan class="inlineequation"> x j b x j b l ¯ ,解码器更新<年代pan class="inlineequation"> λ j b l ¯ dx).

  3. 如果节点的局部距离大于当前距离,则对子树进行修剪<年代pan class="inlineequation"> λ j b l ¯ 在遍历子树时可能会受到影响。

  4. STS在所有树节点都被访问过一次或修剪过之后得出结论。

限制

  • 输出LLR值不受噪声方差的影响。对于采用迭代编码(LDPC或turbo)或采用Viterbi解码的MIMO OFDM编码链路,输出LLR值应根据信道状态信息进行缩放,以获得更好的性能。

选定的参考书目

[1]斯图特,C. A.伯格,H. Bölcskei。软输出球面译码:算法与VLSI实现。IEEE通讯选定领域杂志.第26卷第2期,2008年2月,290-300页。

[2] Cho, Y. S.等。“MIMO-OFDM无线通信与MATLAB”,IEEE出版社,2011。

[3]霍赫瓦尔德,b.m., s.10 Brink。“在多天线信道上实现接近容量”,IEEE通讯汇刊,第51卷,第3期,2003年3月,第389-399页。

[4]阿格雷尔,E., T.埃里克森,A.瓦尔迪,K.齐格。“格子中的最近邻点搜索”,《IEEE信息理论汇刊》,第48卷,第8期,2002年8月,第221 -2214页。

扩展功能

版本历史

在R2013a中引入

另请参阅

|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">