qamdemod
正交振幅解调
描述
例子
解调8-QAM信号
解调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 ',…“参考星座”,“位置”,“西北”);
QAM解调与WLAN符号映射
调制和解调随机数据通过使用与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);
解调接收到的信号。
wlanSymMap z = qamdemod (y, 16日,…UnitAveragePower = true);
验证解调信号等于原始数据。
isequal (x, z)
ans =逻辑1
解调QAM定点信号
解调定点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遇到错误或处理数据
位传输。
为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 (的误比特率)
正如预期的那样,软判决解码产生最好的结果。
不痒的决定OQPSK Modulation-Demodulation
使用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”);
输入参数
y
- - - - - -输入信号
标量|向量|矩阵|三维数组
输入信号导致QAM,指定为一个标量、向量,矩阵,或三维复杂的值的数组。每一列的矩阵和三维数组被认为是一个独立的通道。
数据类型:单
|双
|fi
复数的支持:金宝app是的
米
- - - - - -调制顺序
标量整数
调制命令,指定为2的幂,标量整数。调制顺序指定点的数量信号星座。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
名称-值参数
指定可选的双参数作为Name1 = Value1,…,以=家
,在那里的名字
参数名称和吗价值
相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。
R2021a之前,用逗号来分隔每一个名称和值,并附上的名字
在报价。
例子:z = qamdemod (y、M、symOrder OutputType,“位”)
UnitAveragePower
- - - - - -单位平均功率国旗
假
或0
(默认)|真正的
或1
单位平均功率标志,指定为逗号分隔组成的“UnitAveragePower”
和一个数字或逻辑0
(假
)或1
(真正的
)。当这个标志1
(真正的
),平均功率的函数天平星座一瓦特引用1欧姆。当这个标志0
(假
),这个函数尺度这样QAM星座星座点相距2的最小距离。
OutputType
- - - - - -类型的输出
“整数”
(默认)|“一点”
|“llr”
|“approxllr”
类型的输出,指定为逗号分隔组成的“OutputType”
和“整数”
,“一点”
,“llr”
,或“approxllr”
。
数据类型:字符
NoiseVariance
- - - - - -噪声方差
1
(默认)|积极的标量|向量的积极的价值观
噪声方差,指定为逗号分隔组成的“NoiseVariance”
这些选项之一:
积极的标量——相同的噪声方差值是用于所有输入元素。
积极的价值观——向量的向量长度必须等于过去维度的元素数量的输入信号。向量的每个元素指定输入的所有元素的噪声方差以及相应的维度。
提示
因为对数似算法使用有限精度算法计算指数,指数的计算,或大或小的数字可以产生积极或消极的无穷。近似LLR算法不计算指数。更多细节,请参阅不痒的决定解调。
当“OutputType”
是“llr”
,任何正
或负
解调的计算返回的输出值有可能由于指定的噪声方差值小于信噪比(信噪比)。
为了避免返回的输出值正
或负
,设置“OutputType”
来“approxllr”
而不是“llr”
。
依赖关系
要启用这个名称-值对参数,设置“OutputType”
是“llr”
或“approxllr”
。
数据类型:双
PlotConstellation
- - - - - -选择情节星座
假
或0
(默认)|真正的
或1
选择绘制星座,指定为逗号分隔组成的“PlotConstellation”
和一个数字或逻辑0
(假
)或1
(真正的
)绘制QAM星座,集“PlotConstellation”
来真正的
。
输出参数
z
——解调输出信号
标量| | |向量矩阵三维数组
解调输出信号,作为一个标量返回向量,矩阵,或三维数组。数据类型是一样的输入信号,y
。这个输出的价值和尺寸取决于指定的“OutputType”
值,如表所示。
更多关于
格雷码
一个格雷码也称为反射二进制代码,是一个系统的二进制模式在相邻的星座点相差只有一个。
扩展功能
C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。
版本历史
之前介绍过的R2006aR2018b:初始阶段输入删除
错误从R2018b
在R2018b开始,你再也不能抵消QAM星座的初始阶段使用qamdemod
函数。
相反,使用genqamdemod
函数来抵消初始阶段QAM信号的解调。或者,你可以用调制输入的qamdemod
通过所需的初始阶段,在这段代码中所示
z = qamdemod (y。* exp (1 * initPhase, M))
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。