基于MATLAB的16QAM通信系统的仿真Word文件下载.docx
《基于MATLAB的16QAM通信系统的仿真Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的16QAM通信系统的仿真Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
![基于MATLAB的16QAM通信系统的仿真Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-1/10/92691d02-3fae-4346-bd0d-322e533e48b0/92691d02-3fae-4346-bd0d-322e533e48b01.gif)
样点数目越多,其传输效率越高。
但并不是样点数目越多越好,随着样点数目的增加,QAM系统的误码率会逐渐增大,所以在对可靠性要求较高的环境,不能使用较多样点数目的QAM。
对于4QAM,当两路信号幅度相等时,其产生、解调、性能及相位矢量均与4PSK相同。
a4QAM星座图b16QAM星座图
QAM采用格雷编码,采用格雷码的好处在于相邻相位所代表的两个比特只有一位不同,由于因相位误差造成错判至相邻相位上的概率最大,故这样编码使之仅造成一个比
特误码的概率最大。
下图以16QAM为例,显示了编码:
16QAM编码
2.26QAM调制解调原理
16QAM是两路4ASK信号的叠加,其演变方式可以有以下两种:
(1)正交调幅法,由两路独立的正交4ASK信号叠加而成;
图3-3正交调幅
(2)复合相移法,由两路独立的QPSK信号叠加而成。
图中虚线大圆上的4个大黑点表示第一个QPSK信号矢量的位置,在这4个位置上可以叠加上第二个QPSK矢量,后者的位置用虚线小圆上的4个小黑点表示。
复合相移法
在QAM体制中,信号的振幅和相位作为两个独立的参量同时受到调制。
这种信号的一个码元可以表示为
Sk(t)=Akcos(ω0t+θk)kT<
t≤(k+1)T式3-1
式中,k取整数;
Ak和k分别可以取多个离散值。
上式可以展开为
Sk(t)=Akcosθkcosω0t—Aksinθksinω0t式3-2
令Xk=AkcosθkYk=-Aksinθk
则信号表示式变为
Sk(t)=Xkcosω0t+Yksinω0t式3-3
Xk和Yk也是可以取多个离散值的变量。
从上式看出,k(t)可以看作是两个正交的振幅键控信号之和。
本课题采用了正交调幅法。
在发送端调制器中串/并变换使得信息速率为Rb的输入二进制信号分成两个速率为Rb/2的二进制信号,2/4电平转换将每个速率为Rb/2的二进制信号变为速率为Rb/8的电平信号,然后分别与两个正交载波相乘,再相加后即得16QAM信号。
正交调制原理框图
解调是调制的逆过程,在接收端解调器中可以采用正交的相干解调方法。
接受到的信号分两路进入两个正交的载波的相干解调器,再分别进入判决器形成L进制信号并输出二进制信号,最后经并/串变换后得到基带信号。
下图为16QAM解调框图:
相干解调原理框图
2.3MQAM调制介绍及本仿真程序的几点说明
MQAM可以用正交调制的方法产生,本仿真中取M=16,即幅度和相位相结合的
16个信号点的调制。
为了观察信道噪声对该调制方式的影响,我们在已调信号中又加入了不同强度的高斯白噪声,并统计其译码误码率。
为了简化程序和得到可靠的误码率,我们在解调时并未从已调信号中恢复载波,而是直接产生与调制时一模一样的载波来进行信号解调。
2.4仿真结果图
2.5QAM性能分析
16QAM抗噪声性能仿真:
对于QAM,可以看成是由两个相互正交且独立的多电平ASK信号叠加而成。
因此,利用多电平误码率的分析方法,可得到M进制QAM的误码率为[1]:
(4.1)
式中,
,Eb为每码元能量,n0为噪声单边功率谱密度。
通过调整高斯白噪声信道的信噪比snr(Eb/No),可以得到如图5-2所示的误码率图:
图4-9QAM信号误码率分析
可见16QAM信号的误码率随着信噪比的增大而逐渐减小,这与理论分析是完全一致的
16QAM信号与其它调制信号的性能比较:
(1)16QAM和16PSK
星座图中相邻点欧氏距离直接代表这噪声容限的大小。
按最大振幅相等,画出16QAM信号和16PSK信号的星座图。
设其最大振幅为AM,则16PSK信号的相邻矢量端点的欧氏距离等于
式4-1
而16QAM信号的相邻点欧氏距离等于
式4-2
d2和d1的比值就代表这两种体制的噪声容限之比。
AM
d2
d1
图4-10欧氏距离
按上两式计算,d2超过d1约1.57dB。
但是,这时是在最大功率(振幅)相等的条件下比较的,没有考虑这两种体制的平均功率差别。
16PSK信号的平均功率(振幅)就等于其最大功率(振幅)。
而16QAM信号,在等概率出现条件下,可以计算出其最大功率和平均功率之比等于1.8倍,即2.55dB。
因此,在平均功率相等条件下,16QAM比16PSK信号的噪声容限大4.12dB。
(2)16QAM与2DPSK和64QAM
这里我们设计一个2DPSK调制和解调系统和一个64QAM调制和解调系统的仿真模型,以观察其与16QAM信号的抗噪声性能,并对它们的误码率进行比较。
在取相同的码元速率和载波速率的情况下,设计2DPSK调制解调系统。
这里我们采用的是差分相干解调的方法,所以并不需要做载波恢复。
解调部分的滤波器同样采用了贝塞尔函数低通滤波器,且判决模块简单如下所示。
这样在高斯白噪声信道处调整信噪比,得到如图4-3所示的误码率图。
图4-1116QAM与16DPSK误码率曲线图
从仿真过程看,在相同信噪比的条件下,其误码率介于64QAM和2DPSK之间,也就是说,系统在同等噪声条件下,16QAM的抗噪声性能是相当优越的。
【结束语】
本文研究的重点是对基于MATLAB的16QAM调制解调系统进行设计与仿真,得到以下的结论。
1.对16QAM调制解调系统基本原理进行了较为深入地理解与分析,并且根据其原理编制了仿真程序。
2.较为熟悉地掌握了MATLAB软件在通信系统设计与仿真的基本步骤与方法。
3.利用MATLAB实现了16QAM调制与解调系统的设计,实现与仿真,并得到相应的调制解调波形,发现解调信号波形与输入信号波形存在一定时延,所以该系统的实时性有不足,但并不影响对误码率的检测,以及系统能够的抗噪声性能。
4.对16QAM调制解调系统的抗噪声性能进行分析,通过仿真得到了16QAM系统的误码率曲线,曲线趋势与理论曲线基本一致。
5.从仿真过程看,在相同信噪比的条件下,16QAM的加性白噪声的功率远大于2DPSK的加性白噪声的功率,故16QAM调制解调系统一般工作在大信噪比的环境下,其误码率将很小,也就是说,两个系统在同等噪声条件下,16QAM的抗噪声性能是相当优越的
附源程序代码:
main_plot.m
clear;
clc;
echooff;
closeall;
N=10000;
%设定码元数量
fb=1;
%基带信号频率
fs=32;
%抽样频率
fc=4;
%载波频率,为便于观察已调信号,我们把载波频率设的较低
Kbase=2;
%Kbase=1,不经基带成形滤波,直接调制;
%Kbase=2,基带经成形滤波器滤波后,再进行调制
info=random_binary(N);
%产生二进制信号序列
[y,I,Q]=qam(info,Kbase,fs,fb,fc);
%对基带信号进行16QAM调制
y1=y;
y2=y;
%备份信号,供后续仿真用
T=length(info)/fb;
m=fs/fb;
nn=length(info);
dt=1/fs;
t=0:
dt:
T-dt;
subplot(211);
%便于观察,这里显示的已调信号及其频谱均为无噪声干扰的理想情况
%由于测试信号码元数量为10000个,在这里我们只显示其总数的1/10
plot(t(1:
1000),y(1:
1000),t(1:
1000),I(1:
1000),Q(1:
1000),[035],[00],'
b:
'
);
title('
已调信号(In:
red,Qn:
green)'
%傅里叶变换,求出已调信号的频谱
n=length(y);
y=fft(y)/n;
y=abs(y(1:
fix(n/2)))*2;
q=find(y<
1e-04);
y(q)=1e-04;
y=20*log10(y);
f1=m/n;
f=0:
f1:
(length(y)-1)*f1;
subplot(223);
plot(f,y,'
r'
gridon;
已调信号频谱'
xlabel('
f/fb'
%画出16QAM调制方式对应的星座图
subplot(224);
constel(y1,fs,fb,fc);
title('
星座图'
SNR_in_dB=8:
2:
24;
%AWGN信道信噪比
forj=1:
length(SNR_in_dB)
y_add_noise=awgn(y2,SNR_in_dB(j));
%加入不同强度的高斯白噪声
y_output=qamdet(y_add_noise,fs,fb,fc);
%对已调信号进行解调
numoferr=0;
fori=1:
N
if(y_output(i)~=info(i)),
numoferr=numoferr+1;
end;
Pe(j)=numoferr/N;
%统计误码率
end;
figure;
semilogy(SNR_in_dB,Pe,'
red*-'
xlabel('
SNRindB'
ylabel('
Pe'
16QAM调制在不同信道噪声强度下的误码率'
random_binary.m
%产生二进制信源随机序列
function[info]=random_binary(N)
ifnargin==0,%如果没有输入参数,则指定信息序列为10000个码元
N=10000;
fori=1:
N,
temp=rand;
if(temp<
0.5),
info(i)=0;
%1/2的概率输出为0
else
info(i)=1;
%1/2的概率输出为1
end
qam.m
function[y,I,Q]=qam(x,Kbase,fs,fb,fc);
%
T=length(x)/fb;
m=fs/fb;
nn=length(x);
t=0:
%串/并变换分离出I分量、Q分量,然后再分别进行电平映射
I=x(1:
nn-1);
[I,In]=two2four(I,4*m);
Q=x(2:
nn);
[Q,Qn]=two2four(Q,4*m);
ifKbase==2;
%基带成形滤波
I=bshape(I,fs,fb/4);
Q=bshape(Q,fs,fb/4);
y=I.*cos(2*pi*fc*t)-Q.*sin(2*pi*fc*t);
%调制
qamdet.m
%QAM信号解调
function[xn,x]=qamdet(y,fs,fb,fc);
(length(y)-1)*dt;
I=y.*cos(2*pi*fc*t);
Q=-y.*sin(2*pi*fc*t);
[b,a]=butter(2,2*fb/fs);
%设计巴特沃斯滤波器
I=filtfilt(b,a,I);
Q=filtfilt(b,a,Q);
m=4*fs/fb;
N=length(y)/m;
n=(.6:
1:
N)*m;
n=fix(n);
In=I(n);
Qn=Q(n);
xn=four2two([InQn]);
%I分量Q分量并/串转换,最终恢复成码元序列xn
nn=length(xn);
xn=[xn(1:
nn/2);
xn(nn/2+1:
nn)];
xn=xn(:
xn=xn'
;
bshape.m
%基带升余弦成形滤波器
functiony=bshape(x,fs,fb,N,alfa,delay);
%设置默认参数
ifnargin<
6;
delay=8;
end;
5;
alfa=0.5;
4;
N=16;
end;
b=firrcos(N,fb,2*alfa*fb,fs);
y=filter(b,1,x);
two2four.m
%二进制转换成四进制
function[y,yn]=two2four(x,m);
T=[01;
32];
n=length(x);
ii=1;
n-1;
xi=x(i:
i+1)+1;
yn(ii)=T(xi
(1),xi
(2));
ii=ii+1;
yn=yn-1.5;
y=yn;
m-1;
y=[y;
yn];
y=y(:
)'
%映射电平分别为-1.5;
0.5;
1.5
four2two.m
%四进制转换成二进制
functionxn=four2two(yn);
y=yn;
ymin=min(y);
ymax=max(y);
ymax=max([ymaxabs(ymin)]);
ymin=-abs(ymax);
yn=(y-ymin)*3/(ymax-ymin);
%设置门限电平,判决
I0=find(yn<
0.5);
yn(I0)=zeros(size(I0));
I1=find(yn>
=0.5&
yn<
1.5);
yn(I1)=ones(size(I1));
I2=find(yn>
=1.5&
2.5);
yn(I2)=ones(size(I2))*2;
I3=find(yn>
=2.5);
yn(I3)=ones(size(I3))*3;
%一位四进制码元转换为两位二进制码元
T=[00;
01;
11;
10];
n=length(yn);
n;
xn(i,:
)=T(yn(i)+1,:
xn=xn'
xn=xn(:
constel.m
%画出星座图
functionc=constel(x,fs,fb,fc);
N=length(x);
m=2*fs/fb;
n=fs/fc;
i1=m-n;
i=1;
ph0=(i1-1)*2*pi/n;
whilei<
=N/m;
xi=x(i1:
i1+n-1);
y=2*fft(xi)/n;
c(i)=y
(2);
i=i+1;
i1=i1+m;
%如果无输出,则作图
ifnargout<
1;
cmax=max(abs(c));
ph=(0:
5:
360)*pi/180;
plot(1.414*cos(ph),1.414*sin(ph),'
c'
holdon;
length(c);
ph=ph0-angle(c(i));
a=abs(c(i))/cmax*1.414;
plot(a*cos(ph),a*sin(ph),'
r*'
plot([-1.51.5],[00],'
k:
[00],[-1.51.5],'
holdoff;
axisequal;
axis([-1.51.5-1.51.5]);
通信原理课程设计
——16QAM传输系统设计
学院:
电子与信息工程
专业:
通信工程
姓名:
胡博
学号:
1120119119
指导老师:
罗恒
2014年6月16日