移动通信仿真实验-MATLAB仿真
- 格式:pdf
- 大小:444.31 KB
- 文档页数:17
移动通信仿真实验-MATLAB仿真
2012级移动通信仿真实验
——1234567 通信S班⼀、实验⽬的:
(1)通过利⽤matlab语⾔编程学会解决移动通信中基本理论知识的实验分析和验证⽅法;
(2)巩固和加深对移动通信基本理论知识的理解,增强分析问题、查阅资料、创新等各⽅⾯能⼒。
⼆、实验要求:
(1)熟练掌握本实验涉及到的相关知识和相关概念,做到原理清晰,明了;
(2)仿真程序设计合理、能够正确运⾏;
(3)按照要求撰写实验报告(基本原理、仿真设计、仿真代码(m⽂件)、仿真图形、结果分析和实验⼼得)
三、实验内容:1、分集技术在Rayleigh衰落信道下的误码率分析
内容要求:1)给出不同调制⽅式(BPSK/MPSK/QPSK/MQAM任选3种,M=4/8/16)在AWGN和Rayleigh 衰落环境下的误码率性能⽐较,分析这些调制⽅式的优缺点;2)给出Rayleigh衰落信道下BPSK在不同合并⽅式(MRC/SC/EGC)和不同路径(1/2/3)时的性能⽐较,分析合并⽅式的优缺点;3)给出BPSK在AWGN和Rayleigh衰落信道下1条径和2条径MRC合并时理论值和蒙特卡洛仿真的⽐较。
3、直接扩频技术在Rayleigh衰落信道下的误码率分析
内容要求:1)m-序列、Gold序列和正交Gold序列在AWGN信道下的QPSK误码率分析;
2)m-序列、Gold序列和正交Gold序列在Rayleigh信道下的QPSK误码率分析;
3)m-序列在AWGN和Rayleigh信道下的QPSK误码率分析;
4)m-序列Rayleigh信道下不同调制⽅式MQAM(M=4/8/16)时的误码率分析。
四、实验数据1、基于MATLAB中的BPSK误码性能研究
BPSK(Binary Phase Shift Keying )即双相频移键控,是把模拟信号转换成数据值的转换⽅式之⼀。利⽤偏离相位的复数波浪组合来表现信息键控移相⽅式的⼀种。本实验将简要介绍BPSK调制⽅式的特点,调制解调⽅法,以及在Matlab中在AWGN信道中的误码性能。(1)BPSK调制原理
⼆进制相移键控(BPSK)是利⽤载波的相位的变换来传递信息,⽽振幅和频率保持不变,BPSK的时域表达式为:
π
g
t
t
u
A
+=t f
)
2
cos(
)(Φ
)(
m
c
T
Φ
=
n0(发送“0”时)或1(发送“1”时)
改写之后为t
f t
g A t u c T m π2cos )()(=或
t
f t
g A c T π2cos )(-
另外BPSK 信号⼀般⽤双极性(bipolarity )全占空矩形脉冲序列与⼀个正弦载波相乘表征。PSK 各信号具有相同的能量,即s
T m dt g A dt t u εε===??∞∞∞
∞2
2
2)(
m ε表⽰每个传输符号能量,
T
t g T 2
)(=
定义为⼀个矩形脉冲 ,0≤t ≤T
于是在符号区间0≤t ≤T 内传输的信号波形可表⽰为(其中A=s
ε)
则 )2cos(2)(n c sm t f T t u φπε+=
如果将其看成两相⾓之和,即可表⽰为t f M m
t g t f M m t g t u c T s c T s m ππεππε2sin )2sin()(2cos )2cos(
)()(-=
其中)(1t Φ)(2t Φ是两个正交基函数,定义为t f t g t c T πφ2cos )()(1=
t f t g t c T πφ2sin )()(2-=
并把改两个基函数能量归⼀化到1BPSK 相位解调与检测
AWGN 信道中,接受信号可表⽰为:
)()()(t n t u t r m +==)2sin()()2cos()()(t f t n t f t n t u c s c c m ππ-+ 其中
)(t n c 和)(t n s 是加性噪声的两个正交分量。
将接受信号与)(1t Φ和)(2t Φ做互相关,
两个相关器的输出即可产⽣受噪声污染的
信号分量,可表⽰为n u r m +==
s s c s n M m
n M m ++)2sin()2cos(
πεπε,m=0,1,2,3
其中?∞∞=dt t n t g n c T c )()(21 ?∞∞=dt
t n t g n s T c )()(21
且两正交噪声分量是零均值互不相关的⾼斯随机过程,于是)(t n c 和)(t n s 的⽅差是:
2
)()(0
2
2
N n E n E s c =
=
最佳检测器将接受信号向量r 投射到所有可能的传输信号向量之⼀上,并选对应于最⼤投影的向量,据此相关准则即为m m s r s r C *),(=
m=0,1,2,3由于全部信号都具有相等的能量,因此数字相位调制的⼀种等效检测器标准就是计算接收信号向量),(s c r r r 的相位:
c
s r r r arctan
=θ
并从信号集}{m s 中选取其相位最接近r θ的信号。
在AWGN 信道中,⼆相相位调制与⼆进制PAM 相同,差错概率为:)
2(0
N Q P b
e ε=,其中为每⽐特能量。
(2)程序代码% BPSK 在AWGN 平坦衰落信道的⽆码性能仿真************************************* %**************************************************************** clf; clc;
SNRindB1=0:2:15; % 给定要进⾏仿真的信噪⽐(dB) SNRindB2=0:0.1:15; % 给定要进⾏理论计算的信噪⽐(dB)
%************对SNRindB1进⾏Monte Carlo 仿真******************************** for i=1:length(SNRindB1)
pb=BPSK2(SNRindB1(i)); % 调⽤BPSK2函数对给定信噪⽐进⾏仿真 smld_bit_err_prb(i)=pb; % 通过调⽤函数仿真获得⽐特误码率 end ;%**************************************************************************
%*************对SNRindB2进⾏理论分析*************************************** for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10); % dB 单位信噪⽐化成⼀般式信噪⽐ theo_err_prb(i)=Qfunct(sqrt(2*SNR)); % 调⽤Q 函数计算理论值 end ;%**************************************************************************
% *************绘制相关曲线************************************************ colordef white
h1=semilogy(SNRindB1,smld_bit_err_prb,'g*'); %绘制⽐特误码率曲线
hold
h2=semilogy(SNRindB2,theo_err_prb,'g'); %绘制理论⽐特误码率曲线legend('BPSK仿真误码率','BPSK理论误码率');
xlabel('E/N(dB)')
ylabel('Pe')
title('BPSK在AWGN信道中的误码性能 ')
(3)在AWGN信道中BPSK的误码率分析
基于前⾯的仿真原理,将理论值与仿真值进⾏对⽐,分析合理性,⾸先由MATLAB程序产⽣信号源,再模拟AWGN平坦衰落信道中叠加加性⾼斯⽩噪声,在接收端对接收信号进⾏检测与估值,并对信号进⾏判决恢复原始信号。得到仿真⽐特误码率和理论⽐特误码率如下:
分析:从上图可以看出,仿真⽐特误码率和理论⽐特误码率⾮常接近,不管是在信噪⽐较低的情况下,还是信噪⽐较⾼的情况下,两者都符合得很好,但可以看出,随着信噪⽐逐渐加⼤,两者渐渐有了分叉,慢慢显⽰出差距来,这说明在⼤信噪⽐的情况下,理论值还是会偏离实际值的,但是误码率越来越⼩,越来越向好的⽅向发展。下⾯则给出了三种调制⽅式的误码性能⽐较
分析:将QPSK,BPSK,16QAM,FSK四种调制⽅式,包括理论值与实际值,放在同⼀个图下,对他们进⾏对⽐,可以很清晰地发现,QPSK在信噪⽐较⼩时,仿真值和理论值就有了偏离,且两者数值都⽐较⼤,当信噪⽐越来越⼤时,仿真值成直线⼏乎没变化,⽽实际值的Pe值逐渐变⼩,这种调制⽅式不是很可取;16QAM的性能跟QPSK相⽐,在低信噪⽐时,Pe值较⼤(还要⼤于QPSK的),随着信噪⽐逐渐增⼤,16QAM的Pe值逐渐减⼩,且理论值与实际值⽐较契合,在⼤信噪⽐情况下,误码性能略逊与QPSK的;FSK的理论值和实际值在各种信噪⽐下都⽐较契合,两者⼏乎没有⼤的差距,⾮常理想,⽆论是在低,⾼信噪⽐下,性能都要⽐QPSK的优越⼀些;BPSK性能最优!理论值与实际值契合得⽐较理想,⽽在低,⾼信噪⽐情况下,Pe值都是最低的,且随着信噪⽐逐渐增⼤,Pe实际值迅速减⼩,实现起来性能⼗分优越。因此在选择对误码性能要求较⾼的系统时,BPSK可作为⾸选,FSK次之,QPSK和16QAM再考虑实际情况选择,⽽在其他状态时,也可优先选择BPSK。2、QPSK在AWGN信道下的仿真(上图已有)
clear;close all;
N=10000;
Fd=1;
Fs=1*Fd;
M=4;
SNR_db=0:2:14;
for n=1:length(SNR_db)
Eb_N0=10^(SNR_db(n)/10);
sgma=sqrt(1/(2*Eb_N0));
x=randint(N,1,M);
y=dmodce(x,Fd,Fs,'psk',M);
a11=randn(1,N);
b11=randn(1,N);
%产⽣低通滤波器
b=-ones(1,Fs);b=b/Fs;a=1;
fad1=filter(b,a,a11);
fad2=filter(b,a,b11);
ynoise=y.*(abs(fad1+j*fad2))'+sqrt(Fs/Fd)*sgma*(randn(length(y),1)+j*randn(leng th(y),1));
ynoise1=y+sqrt(Fs/Fd)*sgma*(randn(length(y),1)+j*randn(length(y),1))
z=ddemodce(ynoise,Fd,Fs,'psk',M);
z1=ddemodce(ynoise1,Fd,Fs,'psk',M);
[numbers,p1m(n)]=symerr(x,z);
[numbers,p2m(n)]=symerr(x,z1)
end;
semilogy(SNR_db,p1m,'*-',SNR_db,p2m,'rx-');
xlabel('信噪⽐(dB)');
ylabel('误码率');
legend('瑞利信道仿真得到的误码率','⾼斯信道仿真得到的误码率');axis([0 15 10^(-4) 1]);
clear;
close all;
N=10000; Fd=1;