您的当前位置:首页移动通信仿真实验-MATLAB仿真

移动通信仿真实验-MATLAB仿真

2021-06-19 来源:爱问旅游网
-----WORD格式--可编辑--专业资料-----

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的时域表达式为:

um(t)AgT(t)cos(2fct)

n0(发送“0”时)或1(发送“1”时)

改写之后为

um(t)AgT(t)cos2fct或

AgT(t)cos2fct

另外BPSK信号一般用双极性(bipolarity)全占空矩形脉冲序列与一个正弦载波相乘表征。PSK

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

A2mu(t)dtgTdts2各信号具有相同的能量,即

2m表示每个传输符号能量,

2gT(t)T定义为一个矩形脉冲 ,0≤t≤T

于是在符号区间0≤t≤T内传输的信号波形可表示为(其中A=

s)

um(t)则

如果将其看成两相角之和,即可表示为

2scos(2fctn)T

2m2m)cos2fctsgT(t)sin()sin2fctMM

um(t)sgT(t)cos(其中

1(t)2(t)是两个正交基函数,定义为1(t)gT(t)cos2fct

2(t)gT(t)sin2fct

并把改两个基函数能量归一化到1

BPSK相位解调与检测

AWGN信道中,接受信号可表示为:

r(t)um(t)n(t)=um(t)nc(t)cos(2fct)ns(t)sin(2fct) nc(t)和ns(t)是加性噪声的两个正交分量。

其中

将接受信号与量,可表示为

1(t)和2(t)做互相关,两个相关器的输出即可产生受噪声污染的信号分

scos(2m2m)ncssin()nsMM,m=0,1,2,3

rumn=

11ncgT(t)nc(t)dtncgT(t)ns(t)dt22其中

且两正交噪声分量是零均值互不相关的高斯随机过程,于是

nc(t)和ns(t)的方差是:

N0E(nc)E(ns)222

最佳检测器将接受信号向量r投射到所有可能的传输信号向量之一上,并选对应于最大投影的向量,据此相关准则即为

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

C(r,sm)r*sm

m=0,1,2,3

由于全部信号都具有相等的能量,因此数字相位调制的一种等效检测器标准就是计算接收信号向量

r(rc,rs)的相位:

rarctans并从信号集

rrc

{sm}中选取其相位最接近r的信号。

在AWGN信道中,二相相位调制与二进制PAM相同,差错概率为:

PeQ(2b)N0,其中为每比特能量。

(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)')

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

ylabel('Pe')

title('BPSK在AWGN信道中的误码性能 ')

(3)在AWGN信道中BPSK的误码率分析

基于前面的仿真原理,将理论值与仿真值进行对比,分析合理性,首先由MATLAB程序产生信号源,再模拟AWGN平坦衰落信道中叠加加性高斯白噪声,在接收端对接收信号进行检测与估值,并对信号进行判决恢复原始信号。得到仿真比特误码率和理论比特误码率如下:

分析:从上图可以看出,仿真比特误码率和理论比特误码率非常接近,不管是在信噪比较低的情况下,还是信噪比较高的情况下,两者都符合得很好,但可以看出,随着信噪比逐渐加大,两者渐渐有了分叉,慢慢显示出差距来,这说明在大信噪比的情况下,理论值还是会偏离实际值的,但是误码率越来越小,越来越向好的方向发展。 下面则给出了三种调制方式的误码性能比较

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

分析:将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); %产生低通滤波器

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

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(length(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; Fs=1*Fd; M=4;

for SNR_db=0:10:20

Eb_N0=10^(SNR_db/10); sgma=sqrt(1/(8*Eb_N0)); x=randint(N,1,M);

y=dmodce(x,Fd,Fs,'psk',M);

ynoise=y+sqrt(Fs/Fd)*sgma*(randn(length(y),1)+j*randn(length(y),1)); figure(SNR_db+1);

axis([1.2 1.2 1.2 1.2]); hold on; for i=0:M-1

plot(cos(2*pi*i/M),sin(2*pi*i/M),'.','MarkerSize',20); end

plot(ynoise,'+'); hold off; end;

3、M-QAM调制在高斯信道和Rayleigh衰落信道中的平均误码率性能研究

(1)QAM的调制和相干解调框图如图(1)、图(2)所示。在调制端,输入数据经过串/并变换后分成两路。为了抑制已调信号的带外辐射,两路电平映射出的信号还要经过预调制低通滤波器,才分别与相互正交的各路载波相乘。最后两路信号相加就可以以得到已调输出信号y。

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

In电平映射成形滤波Xcoswt载波发生器基带信号x串并转换Qn电平映射成形滤波+90度相移-sinwt已调信号yX 图(1)正交调制原理框图

解调是调制的逆过程,在接收端解调器中可以采用正交的相干解调方法。接受到的信号分两路进入两个正交的载波的相干解调器,再分别进入判决器形成L进制信号并输出二进制信号,最后经并/串变换后得到基带信号。

Xcoswt已调信号yEPF载波恢复InLPF抽样判决时钟恢复并串转换恢复信号x90度相移-sinwtQnLPF抽样判决X图(2)相

干解调原理框图 对于方型QAM来说,它可以看成是两个脉冲振幅调制信号之和,因此利用脉冲振幅调制的分析结果,可以得到M进制QAM的误码率公式:

PM2(113113)erfx(log2(M)snrpBit))*[1(1)erfx(log2(M)snrpBit)]2(M1)22(M1)MMlog2(M)为每个码元内的比特数,snrpBit为每比特的平均信噪比。

(3)程序代码

clear;

M=16;%设置进制 k=log2(M); L=sqrt(M);

x=randint(30000,1);%产生二进制随机数

y=modulate(modem.qammod('M',16,'InputType','Bit'),x);%调制 snrpBit=0:1:15;%信噪比

s_b2d=bi2de(reshape(x,k,length(x)/k).','left-msb');%二进制变为十进制 for n=1:length(snrpBit)

snr(n)=snrpBit(n)+10*log10(k);%Ratio of symbol energy to noise power spectral density

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

ynoisy=awgn(y,snr(n),'measured');%加入高斯白噪声

z=demodulate(modem.qamdemod('M',16,'OutputType','Bit'),ynoisy);%解调 r_b2d=bi2de(reshape(z,k,length(z)/k).','left-msb');%二进制变为十进制 [sym(n),sym_rate(n)]=symerr(s_b2d,r_b2d);%计算仿真误码率 a=3*log2(L);b=L^(2)-1;c=1-L^(-1); theo_sym_rate(n)= (erfc(sqrt((10.^(snrpBit(n).*0.1)).*a./b)).*2*c).*(1- erfc(sqrt((10.^(snrpBit(n).*0.1)).*a./b)).*(1/2)*c);%计算理论误码率

end

disp(sym);

disp(sym_rate);

semilogy(snrpBit,sym_rate,'r*');%仿真误码率曲线 hold on;

semilogy(snrpBit,theo_sym_rate,'b-');%理论误码率曲线 %text(3,10^-2,'M=2'); %text(4,10^-2,'M=4'); %text(6,10^-2,'M=8'); %text(8,10^-2,'M=16'); %text(10.5,10^-2,'M=32'); %text(12.5,10^-2,'M=64'); title('QAM误码率性能'); xlabel('SNR'); ylabel('误码率');

legend('仿真误码率','理论误码率'); axis([0 15 1e-4 1]);%坐标范围

7.2 M-QAM在Rayleigh信道下误码率性能源程序

(1)主程序

% simulation for M-QAM transmission

M=input('Enter the order of M-QAM, M(2^k) =');%输入 EbNodB = [0:2:20];% 设置Eb/N0为0-20dB,间隔为2. EbNolin = 10.^(EbNodB/10) ;%转换为线性刻度 Pe_sim=[];%设置函数,清零 for i = 1:11,

Pe_sim=[Pe_sim QAM_rayleigh(M, EbNodB(i))];%依次带入EBNO值计算出瑞利信道下相对应误码率 end

% 画瑞利衰落信道下误码率曲线 semilogy(EbNodB,Pe_sim,'r*') hold on

% 计算理论误码率 if(M==4) a=1; else

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

a=4/log2(M); end

b=3*log2(M)/(M-1); Pe=[];

for i = 1:11,

Pe= [Pe 0.5*a*(1-sqrt(0.5*b*EbNolin(i)/(1+0.5*b*EbNolin(i))))];

end % 计算方式出处: Wireless Communication, A. Goldsmith %绘制理论误码率曲线 semilogy(EbNodB,Pe)

xlabel('snr, EbNo(dB)');

ylabel('Bit error probability, Pe');

title('Comparison between theoretical & simulated results of BER of M-QAM'); legend('simulated result','theoretical results'); hold off (2)子函数:

function[ber]= QAM_rayleigh(M, EbNodB)

% 数据送入,M-QAM 调制 k=log2(M);%转换为多路并行

EbNo=10^(EbNodB/10);%转换为线性刻度 N=k*10^4;%信源数

x=0+(1-0)*round(rand(1,N))';%产生随机数,转置,去整,输入序列 h=modem.qammod(M);%调制方式 h.inputtype='bit';%输入为二进制 y=modulate(h,x);%调制

% 加入信道

m=mean((abs(y)).^2)/k;%已调信号的平均功率 sigma=sqrt(m/(2*EbNo));%噪声(标准差)

w=sigma*(randn(N/k,1)+1i*randn(N/k,1));%噪声

H=(1/sqrt(2))*(randn(N/k,1)+1i*randn(N/k,1));%瑞利信道 r=H.*y+w;%输出=信道*输入+高斯噪声

% M-QAM 解调及误码率 r=r./H;%信道均衡

h_n=modem.qamdemod(M);%解调方式 h_n.outputtype='bit';%输出为二进制 z=demodulate(h_n,r);%解调

ber=(N-sum(x==z))/N;%计算误码率并赋值给ber

(4) QAM调制方式,信道为高斯信道的系统误码率分析图:

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

QAM调制方式,信道为瑞利衰落信道的系统误码率分析图:

M=4和8

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

M=16

(5)分析:首先对QAM调制解调系统基本原理进行了较为深入地理解与分析,并得到了M进制QAM的误码率公式。其次,对高斯信道和瑞丽衰落信道进行了简介与分析,最后根据QAM在这两类信道下的误码率性能编写了程序并通过仿真得到了误码率曲线。从误码率曲线图中可以看出,仿真误码率曲线与理论误码率曲线拟合情况良好,说明本文采用方法正确。

4、MPSK调制在高斯信道和Rayleigh衰落信道中的平均误码率性能研究

(1)基本原理

一个MPSK信号码元可以表示为 Sk(t)Acos(0tk) k1,2,,M

式中:A为常数;k为一组间隔均匀的受调制相位,其值取决于基带码元的取值。所以

它可以写为

k2(k1)M k1,2,,M

k通常M取2的某次幂: M2 k为正整数

在后面的分析中,为了不失一般性,可令其中的A=1,然后将MPSK信号码元表示为

sk(t)cos(0tk)akcos0tbksinot

式中:

akcosk,bksink。

ak和

上式表明,MPSK信号可以看作是由正弦和余弦两个正交分量合成的信号。它们的振幅分别是

bk22ab1。kk,并且这就是说,MPSK信号码元可以看做是两个特定的MASK

信号之和。

(2)程序代码

function [pb,ps]=cm_sm32(snr_in_dB)

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

% [pb,ps]=cm_sm32(snr_in_dB) % CM_SM3发现误码和误符号的概率

% snr_in_dB的给定值,信号以dB为单位的信噪比。 counter=0;

numofsymbolerror=0; numofbiterror=0;

while (numofbiterror<100)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N=10000;

E=1; % 每个符号的能量 snr=10^(snr_in_dB/10); % 信噪比 sgma=sqrt(E/snr)/2; % 噪声方差

s00=[1 0]; s01=[0 1]; s11=[-1 0]; s10=[0 -1]; % 信号映射 % generation of the data source for i=1:N,

temp=rand; % 0和1之间均匀分布的随机变量

if (temp<0.25), % 概率小于1/4时,源极输出为“00” dsource1(i)=0; dsource2(i)=0;

elseif (temp<0.5), % 概率小于1/2时,源极输出为\"01\" dsource1(i)=0; dsource2(i)=1;

elseif (temp<0.75), % 概率小于3/4时,源极输出为\"10\" dsource1(i)=1; dsource2(i)=0;

else % 其余,源极输出为\"11\",与星座图对应 dsource1(i)=1; dsource2(i)=1; end; end;

% 检测和计算误差的概率

for i=1:N,

% 在检测所接收的信号,对于第i个符号,方法是:

n=sgma*randn(1,2); % 正态分布,方差 if ((dsource1(i)==0) & (dsource2(i)==0)), r=s00+n;

elseif ((dsource1(i)==0) & (dsource2(i)==1)), r=s01+n;

elseif ((dsource1(i)==1) & (dsource2(i)==0)), r=s10+n; else

r=s11+n; end;

% 相关指标如下计算

c00=dot(r,s00); c01=dot(r,s01); c10=dot(r,s10); c11=dot(r,s11); % 在第i个符号的判定为下一次 c_max=max([c00,c01,c10,c11]);

if (c00==c_max), decis1=0; decis2=0;

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

elseif (c01==c_max), decis1=0; decis2=1; elseif (c10==c_max), decis1=1; decis2=0; else decis1=1; decis2=1; end;

% 增加错误计数器,如果决定是不正确的 symbolerror=0;

if (decis1~=dsource1(i)), numofbiterror=numofbiterror+1; symbolerror=1; end;

if (decis2~=dsource2(i)), numofbiterror=numofbiterror+1; symbolerror=1; end;

if (symbolerror==1), numofsymbolerror=numofsymbolerror+1; end; end;

counter=counter+1; end

ps=numofsymbolerror/(N*counter); % 误信率 pb=numofbiterror/(2*N*counter); % 误码率 function [pb_rayleigh,ps_rayleigh]=rayleigh(snr_in_dB) % [pb_rayleigh,ps_rayleigh]=rayleigh(snr_in_dB) % CM_SM3发现误码和误符号的概率

% snr_in_dB的给定值,信号以dB为单位的信噪比。 counter=0;

numofsymbolerror=0; numofbiterror=0;

while (numofbiterror<100)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N=10000;

E=1; % 每个符号的能量 snr=10^(snr_in_dB/10); % 信噪比 sgma=sqrt(E/snr)/2; % 噪声方差

s00=[1 0]; s01=[0 1]; s11=[-1 0]; s10=[0 -1]; % 信号映射 % generation of the data source for i=1:N,

temp=rand; % 0和1之间均匀分布的随机变量

if (temp<0.25), % 概率小于1/4时,源极输出为\"00\" dsource1(i)=0; dsource2(i)=0;

elseif (temp<0.5), % 概率小于1/2时,源极输出为\"01\" dsource1(i)=0; dsource2(i)=1;

elseif (temp<0.75), % 概率小于3/4时,源极输出为\"10\" dsource1(i)=1; dsource2(i)=0;

else % 否则为\"11\"

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

dsource1(i)=1; dsource2(i)=1; end; end;

% 检测和计算误差的概率 for i=1:N,

% the received signal at the detection, for the ith symbol,is: m=raylrnd(0.7);

n=sgma*randn(1,2); % 正态分布,方差 if ((dsource1(i)==0) & (dsource2(i)==0)), r=m*s00+n;

elseif ((dsource1(i)==0) & (dsource2(i)==1)), r=m*s01+n;

elseif ((dsource1(i)==1) & (dsource2(i)==0)), r=m*s10+n; else

r=m*s11+n; end;

(3)把自己编写的function函数和主函数放在同一个文件夹diaoyonghanshu中,如下图:

打开Matlab,在current folder中打开文件夹diaoyonghanshu添加两个function函数,如下图:

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

然后在Matlab中运行QPSK_System_BER_Simulation.m,得到高斯信道和Rayleigh衰落信道波形图。 (4) 仿真结果

高斯信道和瑞利衰落信道的误码率对比,由图可知瑞利衰落信道下的误码率比高斯信道下的误码率高。

1. 随着信噪比的增大,高斯信道和瑞利衰落信道的误码率均降低。

2. 相同信噪比时,高斯信道和瑞利衰落信道的实际误码率比理论情况下的误码率高。

五、实验心得

通过本次课程设计,感觉有很多收获。在做的过程中遇到了很多问题,像对问题不知道应该从哪里入手分析、对MATLAB编程及软件使用不熟练等等,最后通过查资料及组员之间相互沟通解决了这些问题。在这个工程中,组员的分析解决问题的能力及

--完整版学习资料分享----

-----WORD格式--可编辑--专业资料-----

对MATLAB的掌握都有了很大提高。最后还要感谢本学期老师对移动通信课程的讲授,使我们获得了重要的专业知识同时对通信专业有了更深刻的认识,为以后的深造及工作打下了良好的基础。

--完整版学习资料分享----

因篇幅问题不能全部显示,请点此查看更多更全内容