内容发布更新时间 : 2024/12/29 7:29:26星期一 下面是文章的全部内容请认真阅读。
南昌大学实验报告
学生姓名: 学 号: 专业班级:
实验类型:□ 验证 □ 综合 ? 设计 □ 创新 实验日期: 2018/6/23 实验成绩:
一、实验名称
实验八 16QAM调制解调与信道分析 二、实验目的
(1) 掌握QAM及解调原理与特性 (2) 了解星座图的原理及用途 (3) 分析高斯、瑞利、莱斯信道
三、实验内容
(1) 设计16QAM调制解调算法
(2) 比较GMSK和16QAM在高斯、莱斯和瑞利信道条件下的误码性能 (3) 撰写实验报告。
四、实验原理
正交振幅调制是用两个独立的基带数字信号对两个相互正交的同频载波进行抑制载波的双边带调制,利用这种已调信号在同一带宽内频谱正交的性质来实现两路并行的数字信息传输。
正交振幅调制信号的一般表示式为
16QAM是指包含16种符号的QAM调制方式,产生的框图如图1.
图 1 16QAM调制
相干解调原理如图2.
图 2 16QAM解调
五、实验步骤
(1) 16QAM调制与解调算法
先产生所需的二进制基带信号:
%% 产生的随机二进制数据流
M = 16; %信号的星座尺寸 k = log2(M); %每个符号的比特数 n = 30000; %处理的比特数目 numSamplesPerSymbol = 1; %过采样因子 %% 创建二进制数据流作为列向量
rng default %使用缺省随机数发生器 dataIn = randi([0 1],n,1); %产生的二进制矢量数据 %% 将二进制信号转为整数值信号
dataInMatrix = reshape(dataIn,length(dataIn)/k,k);%数据整形成二进制4元组
dataSymbolsIn = bi2de(dataInMatrix); %转换为整数
使用MATLAB函数qammod()进行QAM的调制
%% 使用16-QAM调制
dataMod = qammod(dataSymbolsIn',M,'bin'); %二进制编码、相位偏移=0 scatterplot(dataMod) title('未加噪声的星座图') axis([-4 4 -4 4])
在信号中加入噪声
%% 添加高斯白噪声
EbNo = 10; % 当信道SNR计算的EB/N0=10dB
snr = EbNo + 10*log10(k) - 10*log10(numSamplesPerSymbol); %% 将信号通过AWGN信道
rxSignal = awgn(dataMod,snr,'measured');
显示星座图
%% 使用scatterplot功能展示星座图
sPlotFig = scatterplot(rxSignal ,1,0,'g.'); hold on
scatterplot(dataMod,1,0,'k*',sPlotFig) title('加了噪声的星座图')
使用MATLAB函数qamdemod ()进行QAM的解调
%% 16-QAM解调
dataSymbolsOut = qamdemod(rxSignal ,M,'bin'); %% 将整数值信号转为二进制信号
dataOutMatrix = de2bi(dataSymbolsOut,k);
dataOut = dataOutMatrix(:); %返回的数据列矢量
计算解调后的误码率
%% 计算系统的误码率(BER)
[numErrors,ber] = biterr(dataIn,dataOut);
fprintf('\\nThe binary coding bit error rate = %5.2e, based on %d errors\\n', ...
ber,numErrors)
运行效果如图3
图 3 运行效果图
(2) QAM在高斯、莱斯和瑞利信道条件下的误码性能
思路:先产生16QAM信号,然后先通过高斯信道引入噪声,再送入莱斯和瑞利信道后输出,通过给定不同的信噪比,画出误码率曲线。效果结果如图4所示,代码见附录1。