一、实验目的
了解QAM的工作原理,掌握QAM调制解调系统的构成,基带信号、载波和已调信号之间的关系;掌握利用matlab对QAM进行仿真的分析方法。
二、实验任务
利用matlab实现对8QAM信号调制与解调的仿真,分别给出消息信号、8QAM信号和解调信号的波形和8QAM信号星座图。利用matlab仿真软件编写程序,完成相应实验内容。
简述8QAM调制解调系统的工作原理和程序设计思路,分别给出消息信号、8QAM信号和解调信号的波形和8QAM信号星座图。
三、实验部分代码
clc,clear;
M=8;
k=log2(M);
n=10000; %比特序列长度
samp=1; %过采样率
x= randi([0,1], 90,1); %生成随机二进制比特流
subplot(311);
stem(x(1:20),'filled'); %绘制相应的二进制比特流信号 title('二进制随机比特流0)
xlabel('二进制比特序列');
ylabel('信号幅度');
x4= reshape(x,k,length(x)/k); %将原始的二进制比特序列每四个一组分组,并排列成k行
%length(x)/k列的矩阵
xsym = bi2de(x4.','left-msb'); %将矩阵转化为相应的八送进制信号序列
subplot(312);
stem(xsym(1:20)); %绘制相应的八进制信号序列 title('八进制随机信号')
xlabel('八进制信号序列');
ylabel('信号幅度');
%8QAM调制
y= qammod(xsym,M); %用8QAM调制器对信号进行调制
subplot(313);
stem(y(1:20));
xlabel('8QAM信号序列');
ylabel('信号幅度');
scatterplot(y); %画出8QAM信号的星座图
title('发射信号星座图');
text(real(y) + 0.1,imag(y),dec2bin(xsym));
axis([-5 5 -5 5]);
EbNo=10;
snr=EbNo+10*log10(k)-10*log10(samp); %信噪比
yn = awgn(y,snr, 'measured'); %加入高斯白噪声
h= scatterplot(yn,samp,0,'b.'); %经过信道后接收到的含白噪声的信号星座图
hold on;
scatterplot(y,1,0,'r+ ',h); %加入不含白噪声的信号星座图
title('接收信号星座图');
legend('含噪声接收信号','不含噪声信号');
axis([-5 5 -5 5]);
hold on;
四、实验结果
图1 随机信号序列及8QAM信号序列
图2 发射信号的星座图
图3 8QAM接收信号的星座图
图4 解调出来的八进制信号
图5 解调出来的二进制信号
图6 误码率和误比特数
如需要完整的程序源码和实验报告,请自行付积分查看,链接如下: