通信系统仿真课程设计报告 题 目: 基于 Matlab 的通信系统仿真 班 级: 姓 名: 学 号: 指导老师: 一、系统综述 利用 Matlab 仿真软件,完成如图所示的一个基本的数字通信系统。信号源产生 0、1等概分布的随机信号,映射到 16QAM 的星座图上,同时一路信号已经被分成了实部和虚部,后边的处理建立在这两路信号的基础上。实部、虚部信号分别经过平方根升余弦滤波器,再加入高斯白噪声,然后通过匹配滤波器(平方根升余弦滤波器)。最后经过采样,判决,得到 0、1 信号,同原信号进行比较,给出 16QAM 数字系统的误码。 图4产生0、1信号调制低通星座图AW GN以SNR为参数图1低通(匹配滤波)实部图虚部图图2解调匹配滤波器输出波形(实部/虚部)星座图图30、1信号BER比较图图5 系统框图 二、系统实现 1、随机信号的产生 利用 Matlab 中自带的函数 randint 来产生 n*k 随机二进制信号。源程序如下: M = 16; k = log2(M); % 每个符号的比特数 n = 6000; % 输入码元的长度 fd=1; fc=4*fd; fs=4*fc; xEnc = randint(n*k,1); %产生长度为 n*k 的随机二进制信号 plot(xEnc); 2、星座图映射 将随机二进制信号映射到 16QAM 星座图上。每四个 bit 构成一个码子,具体实现的方法是,将输入的信号进行串并转换分成两路,分别叫做 I 路和 Q 路。再把每一路的信号分别按照两位格雷码的规则进行映射,这样实际上最终得到了四位格雷码。为了清楚说明,参看表 1。 表 1 两位格雷码的映射规律 两位 0、1 码 映射后(按格雷码) 0 0 -3 0 1 -1 1 1 1 1 0 3 16QAM 调制模块程序如下: function [ gPsk,map ] = qam_modu( M ) gPsk = bitxor(0:sqrt(M)-1,floor((0:sqrt(M)-1)/2))';%转换成格雷码 % 产生 16QAM 的星座对应点的十进制数值 map = repmat(gPsk,1,sqrt(M))+repmat(sqrt(M)*gPsk',sqrt(M),1);%remat(A,m,n)表示复制 m 行 A,n 列 A map = map(:); end 星座图映射模块程序如下(系统框图中图 1 的程序): function xmod = plot_astrology(M,k,mapping,xEnc,d) t1 = qammod(mapping,M);% 16-QAM 调制,将十进制数化为复数 if(d==1) scatterplot(t1); % 星座图 (图 1) title('16QAM 调制后的星座图(图 1)') grid on hold on; % 加入每个点的对应 4 位二进制码 for jj=1:length(t1) text(real(t1(j...