4QAM、16QAM 调制与解调仿真电路,观察并分析QAM星座图和误码率曲线【matlab代码】

源码: https://download.csdn.net/download/qq_44394952/86236776

要求

完成两种调制方式的调制解调:4QAM、16QAM
(1)画出系统框图,搞清楚每个模块的原理及其公式描述;
(2)各模块功能自己编写代码实现;
(3)画出各点处的波形,并分析对错;
(4)分析系统及两种调制方式的误码性能(画出星座图、误码率曲线);
(5)分析仿真结果的因果;

基本原理

系统框图

(1)QAM 调制
在这里插入图片描述
(2)通过信道
在这里插入图片描述
(3)QAM 解调
在这里插入图片描述

原理

产生序列

在这里插入图片描述

调制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

信道在这里插入图片描述

解调在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

误码率

比较解调后输出的比特流与发送端产生的比特流,计算误码率,绘制仿真误符号率与理论误符号率曲线,进行对比分析。
在这里插入图片描述

模块实现及分析

(1)产生二进制序列:使用randsrc()函数生成长度为10000的随机二进制序列;
(2)串并转换:第奇数个码元进入I路,第偶数个码元进入Q路
(3)2-L电平变换、格雷码映射:
4QAM:将0用-1表示,将1用1表示
16QAM:2/4电平转换由二进制变为四进制数字基带信号,格雷码的映射规则如下表所示:
在这里插入图片描述
(4)插值:4QAM信号分别在I路和Q路中,相邻的两个码字之间添加3个0;16QAM信号分别在I路和Q路中,相邻的两个码字之间添加7个0;
(5)低通:使用平方根升余弦滚降滤波器进行频谱成形;
(6)加载频:将通过成形滤波器后的信号调制到频率为原频率10倍的载波上。在一个周期内采10个点。最初的0、1信号的频率是1Hz,则在4QAM中,I路和Q路符号传输的频率是0.5Hz,载频的频率是5.0Hz;在16QAM中,I路和Q路符号传输的频率是0.25Hz,载频的频率是2.5Hz;
(7)对两路信号分别加高斯白噪声模拟通过高斯白噪声信道;
(8)接入端接收到的QAM信号分别使用两路相干载波进行解调;
(9)匹配滤波:使用平方根升余弦滚降滤波器滤除高频分量和噪声;
(10)抽样判决:
在这里插入图片描述
(11)按照调制中格雷码映射规则,将QAM符号重新转换为二进制码原序列。
(12)并串转换:I路信号作为还原后信号中序号为奇数的码元,Q路则作为还原后信号中序号为偶数的码元。
(13)计算误码率:使用biterr()函数对比发送端输入的二进制码元序列和接收端得到的二进制码元,即可得到误码率。
(14)画误码率曲线:信噪比4QAM选择0-9dB,16QAM选择0-13dB;
a)设定信噪比
b)计算该信噪比下的理论误码率
c)仿真该信噪比下的真是误码率
d)重新设定信噪比,重复b)c)步骤

仿真结果及分析

(1)产生随机二进制序列
在这里插入图片描述
此时产生长度为10000的随机0、1序列。
(2)串并转换
在这里插入图片描述
此时,第1、3、5……个码元进入I路,第2、4、6……个码元进入Q路
(3)2-L电平变换、格雷码映射
波形图:
在这里插入图片描述
此时,在4QAM中,内容为“0101”的二进制码元序列调制成了内容包含-1,1的两路QAM符号;在16QAM中,内容为“0101”的二进制码元序列调制成了内容包含-3,-1,1,3的两路QAM符号。
星座图:
在这里插入图片描述
将时域图中I路取值作为x坐标,Q路取值作为y坐标,可以画出4QAM和16QAM的星座图。
频域图:
在这里插入图片描述
(4)插值
波形图:
在这里插入图片描述
在QAM符号之间插入一些0点,4QAM的插值比例为4,16QAM的插值比例为8。
频域图:
在这里插入图片描述
这是将插值后的QAM符号进行DTFT变换后的频域波形,与插值前频域图进行对比,可以看出时域信号的插值会导致频域信号的收缩。
(5)低通
波形图:在这里插入图片描述
将插值后的序列进行行平方根升余弦滚降滤波后得到的时域波形。
频域图:在这里插入图片描述
这是将低通后的信号波形进行DTFT变换后的频域波形,可以看出,经过低通滤波器之后,频域中高频部分被滤除,保留了低频的信号。
(6)加载频在这里插入图片描述
将通过滤波器后的信号调制到频率为原频率10倍的载波上,并将两路QAM符号合成一路信号。
(7)通过高斯白噪声信道
波形图:在这里插入图片描述
4QAM选择信噪比为7dB为例,16QAM选择信噪比为10dB为例。
频域图:在这里插入图片描述
这是将加入高斯白噪声后的信号波形进行DTFT变换后的频域波形,可以看出,由于高斯白噪声在整个频域上是均匀分布的,整个频域范围内都增加了噪声。
(8)低通
波形图:在这里插入图片描述
频域图:在这里插入图片描述
这是将匹配滤波后的信号波形进行DTFT变换后的频域波形,可以看出,信号高频部分的高斯白噪声在经过低通滤波器之后,被消除掉了。
(9)抽样
波形图:在这里插入图片描述
频域图:在这里插入图片描述
星座图:在这里插入图片描述
可以看出,原先整齐的星座图经过信道干扰的影响后变得有些散乱。
(10)判决在这里插入图片描述
(11)逆格雷码映射在这里插入图片描述
(12)恢复二进制序列在这里插入图片描述

(13)本次调制解调过程的误码数及误码率在这里插入图片描述
(14)误码率曲线在这里插入图片描述
由图可知,在同一个信躁比条件下,16QAM比4QAM的误码率更高,因此可以得出普遍的结论,阶数越高,误码率越高。
源码: https://download.csdn.net/download/qq_44394952/86236776

  • 16
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
16QAM调制解调MATLAB代码如下: 调制: ```matlab % 设置参数 M = 16; % 星座点数 fc = 5000; % 载波频率 fs = 100000; % 采样频率 T = 1/fs; % 采样时间间隔 numBits = 1000; % 待调制的比特数 nSamp = 4; % 每个符号的采样数 EbNo = 10; % 信噪比(dB) EsNo = 10*log10(M) + EbNo; % 符号噪声比(dB) sigma = 1/sqrt(2*EsNo); % 噪声标准差 % 生成随机比特流 bitsIn = randi([0 1],1,numBits); % 将比特流分组成符号 M = 16; k = log2(M); symbolsIn = bi2de(reshape(bitsIn,length(bitsIn)/k,k),'left-msb'); % 生成16QAM星座图 constellation = qammod(0:M-1,M); % 16QAM调制 txSig = qammod(symbolsIn,M,'gray'); % 将符号映射到星座图上 txSigMapped = constellation(txSig+1); % 为星座图添加噪声 noise = sigma*randn(size(txSigMapped)); rxSig = txSigMapped + noise; % 绘制星座图 scatterplot(constellation); hold on; plot(real(txSigMapped),imag(txSigMapped),'ko'); plot(real(rxSig),imag(rxSig),'r.'); title('16QAM Constellation'); xlabel('In-Phase'); ylabel('Quadrature'); grid on; ``` 解调: ```matlab % 16QAM解调 rxSigMapped = rxSig ./ constellation; % 将解调后的符号映射到星座图上 [~,rxSymbols] = min(abs(rxSigMapped.' - constellation),[],2); rxBits = de2bi(rxSymbols-1,k,'left-msb').'; rxBits = rxBits(:).'; % 统计误码率 numErrs = sum(rxBits ~= bitsIn); ber = numErrs / length(bitsIn); % 绘制误码率曲线 EbN0 = 0:2:20; theoryBer = berawgn(EbN0,'qam',M); semilogy(EbN0,theoryBer,'b-','LineWidth',2); hold on; semilogy(EbNo,ber,'ro','LineWidth',2); title('16QAM BER'); xlabel('Eb/No (dB)'); ylabel('Bit Error Rate'); legend('Theory','Simulation'); grid on; % 绘制眼图 eyediagram(rxSigMapped,nSamp*2); title('16QAM Eye Diagram'); xlabel('Time'); ylabel('Amplitude'); grid on; ``` 注意,在以上代码中,`qammod`和`qamdemod`函数可以分别用于16QAM调制解调。眼图可以使用`eyediagram`函数来绘制。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值