💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
3.4 在接收器侧通过AWGN信道传输后的HM 4/16 QAM的曲线图
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
【分层调制】在MATLAB中实现4/16 QAM“分层调制”研究
1.两个QPSK调制序列的曲线图
2. 功率缩放后的两个QPSK调制序列的曲线图
3.传输侧传输前HM 4/16 QAM的曲线图
4.在接收器侧通过AWGN信道传输后的HM 4/16 QAM的曲线图
5.高优先级数据和低优先级数据的BER图
这段代码中的每一行都加了注释,以便更好地理解代码。然而,下面给出了一个简短的解释。
主要使用两个不同的数据源,从使用霍夫曼字典的预定义数据集中生成两个不同的数据流,一个用于高优先级,另一个用于低优先级。在代码中,这些流被命名为“Hp_sig”和“Lp_sig”。
这些流随后通过源编码器,然后通过信道编码器。
在调制之前,两个随机生成信号的比特必须相等,以便一个流的比特可以与另一个流的比特组合,如上图所示。
此外,比特必须均匀,以便两个相同信号的比特可以组合在一起形成一个符号。如果没有,那么在位的末尾添加另一个位,使它们相等。此代码使用“Rem”函数检查位的奇偶性,即如果余数为零,则位为偶数。如果位不偶,则添加另一个值为“1”的位。为此,“Vertcat”函数被用作“ChannelCoded_HPSignal”,而“ChannelCoded_LPSignal”包含列中的值。
HP_Symbol = reshape(ChannelCoded_HPSignal,2,e); %QPSK符号形成并将其按列放入矩阵中
LP_Symbol = reshape(ChannelCoded_LPSignal,2,e); %QPSK符号形成并将其按矩阵列方式放置
上述代码行通过组合两个连续的位来制定符号,并将这些组合的位放在一列中,然后将接下来的两个位放在下一列中,依此类推。
然后,使用两个“for”循环将高优先级流和低优先级流的每个符号传递给函数“QPSK_BitToPhase”,该函数为每个符号分配相位。
每个信号都可以被分解为………Cosθ+jSinθ的形式,也可以写成e^jθ
HP_BeforeScaling = exp(1jPhase_HP); % 扩展前的HP信号缩放前的QPSK高优先级流
LP_BeforeScaling = exp(1jPhase_LP); % 相位LP的缩放前缩放前的 QPSK 低优先级流
上面的代码行只是做同样的事情,将信号分解成它的余弦和正弦信号,从而很容易找到符号属于哪个象限。
接下来,为两个流分配优先级,即高优先级和低优先级。在此代码中,高优先级被设置为3+3i,低优先级被设置为1+1i。
然后,两条溪流汇合在一起。
然后,将合并的溪流通过渠道输送。
然后绘制接收到的信号
接下来,对信号进行解调。为此,使用以下代码计算实部和虚部
R=实数(层次结构_Mod_RxSignal(1,i));%计算实部 。。。。。。。。。。
I=imag(层次结构_Mod_RxSignal(1,I));
基于这些实部和虚部,确定接收符号的象限,并如上图所示,对位的值进行判断。对于HP流,只需要四个决定,即决定符号属于四个象限中的哪一个。对于LP流,需要16个决定,即每个高优先级点周围的四个象限。
这些位随后被保存在一个矩阵中。
对于信道解码,首先检查比特是否可被3整除,因为在信道编码时,我们使用的约束长度为3。
然后比较源编码比特数和信道解码比特数,因为如果它们不相等,则不会执行源解码,因为对于某些比特,字典中不存在代码。
如果位不相等,则通过截断额外的位或添加一些位来使其相等。
然后计算两个流的比特误差率。
1. 引言
分层调制(Hierarchical Modulation, HM)是一种用于提高数字通信系统灵活性和效率的技术。它通过将数据分成不同优先级的多层,并针对不同层使用不同的调制和编码方案,从而在确保高优先级数据可靠传输的同时,尽可能提高低优先级数据的吞吐量。本研究将重点探讨HM 4/16 QAM(Quadrature Amplitude Modulation,正交幅度调制)的实现和性能评估。
2. 系统模型与实现
2.1 数据生成与QPSK调制
首先,我们生成两个独立的比特流,分别代表高优先级和低优先级数据。然后,使用QPSK调制器对这两个比特流进行调制,生成两个QPSK调制序列。
2.2 功率缩放与叠加
为了模拟分层调制的效果,我们对两个QPSK调制序列进行功率缩放,使高优先级数据具有较高的功率,而低优先级数据具有较低的功率。然后,将这两个缩放后的QPSK信号叠加在一起,形成一个复合信号。这个复合信号可以看作是HM 4/16 QAM的传输信号,其中高优先级数据决定了信号的主要相位和幅度,而低优先级数据则通过微小的相位和幅度变化进行传输。
需要注意的是,这里的HM 4/16 QAM并不是传统意义上的16个符号的16-QAM调制,而是通过两个QPSK信号的叠加来模拟一种简化的分层调制效果。真正的16-QAM会使用16个不同的复数符号来表示4个比特的数据。然而,在本研究中,我们关注的是分层调制的概念,而不是16-QAM的完整实现。
2.3 传输与接收
在传输侧,我们将叠加后的复合信号通过AWGN(Additive White Gaussian Noise,加性高斯白噪声)信道进行传输。在接收侧,我们使用相应的解调器来恢复高优先级和低优先级数据。
3. 实验结果与分析
3.1 两个QPSK调制序列的曲线图
图1展示了两个独立的QPSK调制序列的时域波形图。可以观察到,这两个序列在相位上呈现出四种不同的状态,分别对应QPSK调制的四个符号。
(注:此处省略具体图表,实际研究应包含图表展示。)
3.2 功率缩放后的两个QPSK调制序列的曲线图
图2展示了功率缩放后的两个QPSK调制序列的曲线图。可以观察到,高优先级数据的功率较高,而低优先级数据的功率较低。这种功率差异有助于在接收端区分不同优先级的数据。
(注:此处省略具体图表,实际研究应包含图表展示。)
3.3 传输侧传输前HM 4/16 QAM的曲线图
图3展示了传输前HM 4/16 QAM的曲线图。这个复合信号是通过将功率缩放后的两个QPSK调制序列叠加在一起得到的。可以观察到,这个复合信号在幅度和相位上都呈现出更复杂的变化,这反映了分层调制的效果。
(注:此处省略具体图表,实际研究应包含图表展示。)
3.4 在接收器侧通过AWGN信道传输后的HM 4/16 QAM的曲线图
图4展示了通过AWGN信道传输后的HM 4/16 QAM的曲线图。可以观察到,由于噪声的影响,接收到的信号在幅度和相位上都发生了一定的畸变。然而,通过适当的解调算法,我们仍然可以恢复出高优先级和低优先级数据。
(注:此处省略具体图表,实际研究应包含图表展示。)
3.5 高优先级数据和低优先级数据的BER图
图5和图6分别展示了高优先级数据和低优先级数据的误码率(Bit Error Rate, BER)随信噪比(Signal-to-Noise Ratio, SNR)变化的曲线图。可以观察到,随着SNR的增加,高优先级数据和低优先级数据的BER都逐渐降低。然而,由于高优先级数据具有较高的功率和优先级,因此其BER性能优于低优先级数据。这验证了分层调制在提高通信系统灵活性和效率方面的有效性。
(注:此处省略具体图表和详细数据点描述,实际研究应包含详细的图表和数据点描述。)
4. 结论与展望
本研究通过模拟实验验证了分层调制HM 4/16 QAM的可行性和有效性。实验结果表明,分层调制能够在确保高优先级数据可靠传输的同时,提高低优先级数据的吞吐量。然而,本研究还存在一些局限性,如简化的分层调制模型、未考虑信道编码等因素。未来的研究可以进一步探索更复杂的分层调制方案、引入信道编码技术以提高系统的鲁棒性等方向。
📚2 运行结果
部分代码:
% Source coding
symbols = [1 2 3 4 5]; % Data symbols
p = [0.5 0.22 0.2 0.05 0.03]; % Probability of each data symbol
dict = huffmandict(symbols,p); % Dictionary creation i.e assigning codes to each data symbol
Hp_sig=randsrc(2500,1,[symbols;p]); % Random signal generation from first source
SourceCoded_HPSignal = huffmanenco(Hp_sig,dict); % source coding for high prority scheme.
Lp_sig=randsrc(2500,1,[symbols;p]); % Random signal generation from 2nd source
SourceCoded_LPSignal = huffmanenco(Lp_sig,dict); % source coding for low prority scheme.
% Channel coding
trellis = poly2trellis([3],[4 5 7]);
ChannelCoded_HPSignal = convenc(SourceCoded_HPSignal,trellis); % channel coding for high prority scheme.
ChannelCoded_LPSignal = convenc(SourceCoded_LPSignal,trellis); % channel coding for low prority scheme.
[m,n] = size(ChannelCoded_HPSignal);
[r,c] = size(ChannelCoded_LPSignal);
% Making randomly generated HP and LOw priority matrices equal
if m*n>r*c % If bits in HP stream signal are more then the LP stream signal then truncate the HP stream bits that are over and above the LP stream
ChannelCoded_HPSignal(r+1:end) = [];
TSid=0; % Truncated stream Id
elseif m*n<r*c % If bits in LP stream signal are more then the HP stream signal then truncate the LP stream bits that are over and above the HP stream
ChannelCoded_LPSignal(m+1:end) = [];
TSid=1;
end
% QPSK Modulation
[a,b] = size(ChannelCoded_HPSignal);
d=a*b; % Total no of bits in the signal
e=d/2;
if rem(e,1)==0 % check if no of bits are even or odd
flag=0;
else
ChannelCoded_HPSignal= vertcat(ChannelCoded_HPSignal,1); %concatenate another bit with value '1' if no of bits are odd to complete the last symbol of QPSK
ChannelCoded_LPSignal= vertcat(ChannelCoded_LPSignal,1);
e=(d+1)/2;
flag=1;
end
HP_Symbol = reshape(ChannelCoded_HPSignal,2,e); %QPSK symbol formation and putting them in a matrix column wise
LP_Symbol = reshape(ChannelCoded_LPSignal,2,e); %QPSK symbol formation and putting them in a matrix column wise
[f,g] = size(HP_Symbol);
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)
[1]何睿.卫星信道中自适应分层调制技术研究[D].北京理工大学,2018.
[2]何秀慧,马世平.基于QPSK调制的扩频通信系统FPGA实现[J].微计算机信息, 2011, 27(4):3.
[3]刘金.卫星通信中的QPSK/8PSK调制技术分析[J].江西通信科技, 2015(2):3.
[4]蔺莹.QPSK与π/4-QPSK调制原理分析与比较[J].甘肃科技, 2007, 23(8):3.
[5]梁军杰,左金明.QPSK调制与FEC差错控制在DVB系统中的应用[J].中国图象图形学报, 2000.
🌈4 Matlab代码、文档下载
资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取