正交振幅解调
解调一个8-QAM信号并绘制与符号0和3对应的点。
生成随机8元数据符号。
数据= randi([0 7],1000,1);
调节数据
通过应用8-QAM。
txSig = qammod(数据,8);
将调制后的信号通过AWGN通道传递。
rxSig = awgn (txSig, 18岁,“测量”);
用的初始相位解调接收信号 / 8。
rxData = qamdemod (rxSig。* exp(1我*π/ 8),8);
生成参考星座点。
if (ref (0, 1) = 0, 1), 0), colorffffff;
绘制接收信号点对应符号0和3,覆盖参考星座。显示与这些符号相对应的接收数据。
情节(rxSig (rxData = = 0),“g”。);持有在情节(rxSig (rxData = = 3),“c”。);情节(refpts的r *)文本(真实(refpts) + 0.1,图像放大(refpts) num2str((0:7) '))包含(“同步”) ylabel (“交”)传说('对应于0的点','对应于3的点',...“参考星座”,“位置”,“西北”);
利用16-QAM和WLAN符号映射对随机数据进行调制和解调。验证输入数据符号是否与解调符号匹配。
生成随机符号的三维数组。
x =兰迪([0,15),20岁,4,2);
创建基于WLAN标准的16-QAM星座的自定义符号映射。
wlanSymMap = [2 3 10 6 7 5 4 14 15 13 12 10 11 9 8];
调制数据,并设置星座具有单位平均信号功率。情节的星座。
wlanSymMap y = qammod (x, 16日,“UnitAveragePower”,真的,“PlotConstellation”,真正的);
解调接收信号。
wlanSymMap z = qamdemod (y, 16日,“UnitAveragePower”,真正的);
验证解调后的信号是否与原始数据一致。
isequal (x, z)
ans =逻辑1
解调定点QAM信号,验证数据恢复正确。
设置调制顺序为64
,并确定每个符号的比特数。
M = 64;bitsPerSym = log2 (M);
生成随机位。当以位模式操作时,输入数据的长度必须是每个符号的位数的整数倍。
x = randi([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
估计AWGN中硬判决和软判决维特比译码器的误码率性能。将性能与未编码的64-QAM链路进行比较。
设置仿真参数。
清晰;关闭所有rng默认的M = 64;%调制顺序k = log2 (M);每符号%位EbNoVec = (4:10) ';% Eb/No值(dB)numSymPerFrame = 1000;%每帧QAM符号的数量
初始化误码率结果向量。
berEstSoft = 0(大小(EbNoVec));berEstHard = 0(大小(EbNoVec));
设置一个速率的格架结构和追踪深度1/2
、约束长度7
卷积码。
Trellis = poly2trellis(7,[171 133]);台= 32;率= 1/2;
主处理循环执行以下步骤:
生成二进制数据
对数据进行卷积编码
对数据符号应用QAM调制。指定发送信号的单位平均功率
将调制后的信号通过AWGN通道传递
用硬判决和近似LLR方法解调接收信号。指定接收信号的单位平均功率
维特比解码信号使用硬和非量化的方法
计算误码数
的而
循环继续处理数据,直到遇到100个错误或
位传输。
为n = 1:长度(EbNoVec)%将Eb/No转换为信噪比snrdB = EbNoVec(n) + 10*log10(k*rate);单位平均信号功率的噪声方差计算。noiseVar = 10 ^ (-snrdB / 10);重置错误和位计数器[numErrsSoft, numErrsHard numBits] =交易(0);而numErrsSoft < 100 && numBits < 1e7%生成二进制数据并转换为符号dataIn = randi([0 1],numSymPerFrame*k,1);对数据进行卷积编码dataEnc = convenc (dataIn,格子);% QAM调制txSig = qammod (dataEnc, M,“InputType”,“一点”,“UnitAveragePower”,真正的);%通过AWGN通道rxSig = awgn (txSig snrdB,“测量”);使用硬判决(比特)和解调噪声信号%软决定(近似LLR)方法。rxDataHard = qamdemod (rxSig, M,“OutputType”,“一点”,“UnitAveragePower”,真正的);rxDataSoft = qamdemod (rxSig, M,“OutputType”,“approxllr”,...“UnitAveragePower”,真的,“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 (的误比特率)
正如预期的那样,软决策解码产生最好的结果。
使用qamdemod
函数模拟oqpsk调制信号的软判决输出。
产生OQPSK调制信号。
sps = 4;MSG = randi([0 1],1000,1);oqpskMod = comm.OQPSKModulator (“SamplesPerSymbol”sps,“BitInput”,真正的);oqpskSig = oqpskMod(味精);
在生成的信号中添加噪声。
impairedSig = awgn (oqpskSig 15);
执行不痒的决定解调
创建QPSK等效信号,以校准同相和正交。
impairedQPSK = complex(real(impairedSig(1+sps/2:end-sps/2)), imag(impairedSig(sps+1:end)));
对接收到的OQPSK信号进行匹配滤波。
halfSinePulse =罪(0:π/ sps (sps) *π/ sps);matchedFilter = dsp。FIRDecimator (sps halfSinePulse,“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
复数的支持:万博1manbetx是的
米
- - - - - -调制顺序调制顺序,指定为2的幂标量整数。调制顺序指定了信号星座中的点的数量。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
指定可选的逗号分隔的对名称,值
参数。的名字
参数名和价值
为对应值。的名字
必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
z = qamdemod (y、M、symOrder OutputType,“位”)
UnitAveragePower
- - - - - -单位平均功率旗假
或0
(默认)|真正的
或1
单位平均功率标志,指定为逗号分隔对组成“UnitAveragePower”
和数字或逻辑0
(假
)或1
(真正的
).当这面旗帜1
(真正的
),该函数将星座的平均功率调整为1瓦特参考1欧姆。当这面旗帜0
(假
),该函数缩放星座,使QAM星座点之间的距离最小为2。
OutputType
- - - - - -类型的输出“整数”
(默认)|“一点”
|“llr”
|“approxllr”
输出类型,指定为逗号分隔对,由“OutputType”
和“整数”
,“一点”
,“llr”
,或“approxllr”
.
数据类型:字符
NoiseVariance
- - - - - -噪声方差1
(默认)|积极的标量|正向量噪声方差,指定为逗号分隔对,由“NoiseVariance”
其中一个选择是:
正标量-对所有输入元素使用相同的噪声方差值。
正值向量——向量长度必须等于输入信号的最后一个维的元素数。向量的每个元素指定了输入中所有元素在相应的最后一个维度上的噪声方差。
提示
因为对数似然算法使用有限精度算法计算指数,计算大或小的指数可以产生正或负无穷。近似的LLR算法不计算指数。有关详细信息,请参见不痒的决定解调.
当“OutputType”
是“llr”
,任何正
或负
解调计算输出返回的值可能是由于指定的噪声方差值小于信噪比(SNR)。
以避免返回的输出值正
或负
,设置“OutputType”
来“approxllr”
而不是“llr”
.
要启用此名称-值对参数,请设置“OutputType”
是“llr”
或“approxllr”
.
数据类型:双
PlotConstellation
- - - - - -选择绘制星座图假
或0
(默认)|真正的
或1
选择绘制星座,指定为逗号分隔的对组成“PlotConstellation”
和数字或逻辑0
(假
)或1
(真正的
)绘制QAM星座,设置“PlotConstellation”
来真正的
.
z
—解调输出信号解调后的输出信号,以标量、矢量、矩阵或三维阵列的形式返回。数据类型与输入信号的数据类型相同,y
.此输出的值和维度取决于指定的值“OutputType”
值,如下表所示。
一个格雷码,也称为反射二进制码,是指相邻星座点的位模式仅相差一位的系统。
错误开始于R2018b
从R2018b开始,您不能再使用qamdemod
函数。
相反,使用genqamdemod
函数抵消被解调的QAM信号的初始相位。或者,你可以乘上的调制输入qamdemod
通过所需的初始阶段,如代码所示
z = qamdemod (y。* exp (1 * initPhase, M))
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。