主要内容

qamdemod

正交振幅解调

描述

例子

z= qamdemod (y,)返回一个解调信号,z正交幅度调制(QAM)信号y调制阶

例子

z= qamdemod (y,,symOrder)返回一个解调信号,z解调,并指定象征秩序。

例子

z= qamdemod (___,名称,值)使用一个或多个名称-值对参数指定选项。例如,“OutputType”、“位”设置输出信号的类型。

例子

全部折叠

解调8-QAM信号和情节相对应的点符号0和3。

生成随机8-ary数据符号。

data =兰迪([0 7],1000 1);

调节数据通过应用8-QAM。

txSig = qammod(数据,8);

通过通过AWGN信道调制信号。

rxSig = awgn (txSig, 18岁,“测量”);

解调接收信号使用的初始阶段 π / 8。

rxData = qamdemod (rxSig。* exp(1我*π/ 8),8);

生成参考星座点。

refpts = qammod ((0:7) ', 8)。* exp(1我*π/ 8);

情节相对应的接收信号点符号0和3和覆盖星座的引用。相对应的接收的数据显示这些符号。

情节(rxSig (rxData = = 0),“g”。);持有情节(rxSig (rxData = = 3),“c”。);情节(refpts的r *)文本(真实(refpts) + 0.1,图像放大(refpts) num2str((0:7) '))包含(“同步”)ylabel (“交”)传说(0点对应的,的点对应于3 ',“参考星座”,“位置”,“西北”);

图包含一个坐标轴对象。坐标轴对象包含11线类型的对象,文本。这些对象代表点对应于0点对应3,参考星座。

调制和解调随机数据通过使用与WLAN 16-QAM符号映射。验证输入数据匹配解调的符号象征。

随机生成一个三维数组的符号。

x =兰迪([0,15),20岁,4,2);

创建一个自定义符号映射星座16-QAM基于WLAN标准。

wlanSymMap = [2 3 1 0 6 7 5 4 14 15 13 12 10 11 9 8];

调整数据,并设置星座单元信号平均功率。情节的星座。

wlanSymMap y = qammod (x, 16日,UnitAveragePower = true,PlotConstellation = true);

图包含一个坐标轴对象。与标题16-QAM坐标轴对象,自定义映射,UnitAveragePower = true包含19线类型的对象,文本。

解调接收到的信号。

wlanSymMap z = qamdemod (y, 16日,UnitAveragePower = true);

验证解调信号等于原始数据。

isequal (x, z)
ans =逻辑1

解调定点QAM信号,并验证数据正确地恢复。

设置调制顺序64年,并确定每个符号位的数量。

M = 64;bitsPerSym = log2 (M);

生成随机位。在一些模式操作时,输入数据的长度必须是一个整数倍数的每个符号的比特数。

x =兰迪([0,1],10 * bitsPerSym, 1);

调节输入数据使用二进制符号的映射。调制器输出定点数据集合。签署的数值数据类型是16位字长和10位部分的长度。

y = qammod (x, M,“本”,“InputType”,“一点”,“OutputDataType”,numerictype(10) 1, 16日);

64 - qam解调信号。验证解调数据匹配的输入数据。

z = qamdemod (y、M、“本”,“OutputType”,“一点”);s = isequal (x,双(z))
s =逻辑1

估计比特误码率(BER)性能的艰难的决定,不痒的决定在AWGN维特比解码器。比较性能的未编码的64 - qam链接。

设置仿真参数。

rng默认的M = 64;%调制顺序k = log2 (M);%每个符号位EbNoVec = (4:10) ';% Eb /不值(dB)numSymPerFrame = 1000;% QAM符号每帧的数量

初始化系统结果向量。

berEstSoft = 0(大小(EbNoVec));berEstHard = 0(大小(EbNoVec));

设置框架结构和回溯深度率1/2、约束长度7卷积码。

格子= poly2trellis (7 (171 133));台= 32;率= 1/2;

主要处理循环执行这些步骤:

  • 生成二进制数据

  • 卷积编码的数据

  • 数据应用于QAM调制符号。指定单位平均功率的传输信号

  • 通过通过AWGN信道调制信号

  • 解调接收信号使用困难的决定和近似LLR方法。指定单位接收信号的平均功率

  • 维特比解码的信号和unquantized方法使用困难

  • 计算一些错误的数量

循环继续直到100遇到错误或处理数据 10 7 位传输。

n = 1:长度(EbNoVec)%转换Eb /不信噪比snrdB = EbNoVec (n) + 10 * log10 (k *率);%噪声方差计算统一信号平均功率noiseVar = 10 ^ (-snrdB / 10);%复位误差和位计数器[numErrsSoft, numErrsHard numBits] =交易(0);e7 numErrsSoft < 100 & & numBits < 1%生成二进制数据并转换为符号dataIn =兰迪([0,1],numSymPerFrame * k, 1);%卷积编码数据dataEnc = convenc (dataIn,格子);% QAM调制txSig = qammod (dataEnc, M,InputType =“一点”,UnitAveragePower = true);%通过AWGN信道rxSig = awgn (txSig snrdB,“测量”);%解调的信号(钻头)和使用困难的决定%软决策(近似LLR)方法。rxDataHard = qamdemod (rxSig, M,OutputType =“一点”,UnitAveragePower = true);rxDataSoft = qamdemod (rxSig, M,OutputType =“approxllr”,UnitAveragePower = true,NoiseVariance = noiseVar);%维特比解码解调数据dataHard = vitdec (rxDataHard,格子、台“合同”,“硬”);dataSoft = vitdec (rxDataSoft,格子、台“合同”,“unquant”);%计算框架中的一些错误的数量。%为解码延迟调整,等于%回溯深度。numErrsInFrameHard =biterr (dataIn (1: end-tbl), dataHard(台+ 1:结束);numErrsInFrameSoft =biterr (dataIn (1: end-tbl), dataSoft(台+ 1:结束);%增加误差和计数器numErrsHard = numErrsHard + numErrsInFrameHard;numErrsSoft = numErrsSoft + numErrsInFrameSoft;numBits = numBits + numSymPerFrame * k;结束%为两种方法估计误码率berEstSoft (n) = numErrsSoft / numBits;berEstHard (n) = numErrsHard / numBits;结束

绘制数据估计软硬误码率。64 - qam阴谋的理论性能未编码的通道。

semilogy (EbNoVec [berEstSoft berEstHard),“- *”)举行semilogy (EbNoVec berawgn (EbNoVec“qam”传说,M)) (“软”,“硬”,的未编码的,“位置”,“最佳”)网格包含(“Eb /不(dB)”)ylabel (的误比特率)

图包含一个坐标轴对象。坐标轴对象包含3线类型的对象。这些对象代表软,硬,未编码的。

正如预期的那样,软判决解码产生最好的结果。

使用qamdemod函数来模拟软OQPSK-modulated决定输出信号。

生成一个OQPSK调制信号。

sps = 4;味精=兰迪([0,1],1000,1);oqpskMod = comm.OQPSKModulator (“SamplesPerSymbol”sps,“BitInput”,真正的);oqpskSig = oqpskMod(味精);

添加噪声生成的信号。

impairedSig = awgn (oqpskSig 15);

执行不痒的决定解调

创建QPSK信号同相一致和正交。

impairedQPSK =复杂(真正的(impairedSig (1 + sps / 2: end-sps / 2)),图像放大(impairedSig (sps + 1:结束)));

匹配滤波应用于收到OQPSK信号。

halfSinePulse =罪(0:π/ sps (sps) *π/ sps);halfSinePulse matchedFilter = dsp.FIRDecimator (sps,“DecimationOffset”、sps / 2);filteredQPSK = matchedFilter (impairedQPSK);

执行软解调过滤OQPSK信号的使用qamdemod函数。使符号的映射qamdemod使用的符号映射comm.OQPSKModulator,然后解调信号。

oqpskModSymbolMapping = [1 3 0 2];解调= qamdemod (oqpskModSymbolMapping filteredQPSK, 4日,“OutputType”,“llr”);

输入参数

全部折叠

输入信号导致QAM,指定为一个标量、向量,矩阵,或三维复杂的值的数组。每一列的矩阵和三维数组被认为是一个独立的通道。

数据类型:||fi
复数的支持:金宝app是的

调制命令,指定为2的幂,标量整数。调制顺序指定点的数量信号星座。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

象征秩序,指定这些选项之一:

  • “灰色”——使用格雷码排序。

  • “本”——使用自然二进制编码排序。

  • 向量-使用自定义符号的订购。向量长度必须。向量必须使用独特的元素的值的范围从0到- 1。第一个元素对应的左上角点星座,与后续元素顺着从左到右列。

数据类型:字符|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:z = qamdemod (y、M、symOrder OutputType,“位”)

单位平均功率标志,指定为逗号分隔组成的“UnitAveragePower”和一个数字或逻辑0()或1(真正的)。当这个标志1(真正的),平均功率的函数天平星座一瓦特引用1欧姆。当这个标志0(),这个函数尺度这样QAM星座星座点相距2的最小距离。

类型的输出,指定为逗号分隔组成的“OutputType”“整数”,“一点”,“llr”,或“approxllr”

数据类型:字符

噪声方差,指定为逗号分隔组成的“NoiseVariance”这些选项之一:

  • 积极的标量——相同的噪声方差值是用于所有输入元素。

  • 积极的价值观——向量的向量长度必须等于过去维度的元素数量的输入信号。向量的每个元素指定输入的所有元素的噪声方差以及相应的维度。

提示

因为对数似算法使用有限精度算法计算指数,指数的计算,或大或小的数字可以产生积极或消极的无穷。近似LLR算法不计算指数。更多细节,请参阅不痒的决定解调

“OutputType”“llr”,任何解调的计算返回的输出值有可能由于指定的噪声方差值小于信噪比(信噪比)。

为了避免返回的输出值,设置“OutputType”“approxllr”而不是“llr”

依赖关系

要启用这个名称-值对参数,设置“OutputType”“llr”“approxllr”

数据类型:

选择绘制星座,指定为逗号分隔组成的“PlotConstellation”和一个数字或逻辑0()或1(真正的)绘制QAM星座,集“PlotConstellation”真正的

输出参数

全部折叠

解调输出信号,作为一个标量返回向量,矩阵,或三维数组。数据类型是一样的输入信号,y。这个输出的价值和尺寸取决于指定的“OutputType”值,如表所示。

“OutputType” 的返回值qamdemod 维的输出
“整数” 解调的整数值从0到(- 1) z有相同的维数作为输入y
“一点” 解调的位 的行数z日志2()倍的行数y。每个符号映射到一组解调技术日志2()位,第一位是最重要的一点(MSB)和最后一点代表了最低有效位(LSB)。
“llr” 对数似比率值为每一位使用确切的对数似然算法计算。更多细节,请参阅确切的LLR算法
“approxllr” 每一位值近似对数似然比。使用近似对数似然值计算算法。更多细节,请参阅近似LLR算法

更多关于

全部折叠

格雷码

一个格雷码也称为反射二进制代码,是一个系统的二进制模式在相邻的星座点相差只有一个。

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

版本历史

之前介绍过的R2006a

全部展开

错误从R2018b