移动通信实验报告Word文档下载推荐.docx
《移动通信实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《移动通信实验报告Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
我们产生一个和信号长度相同的噪声向量,且该向量方差为σn。
7加上噪声,运行接收器。
8确定时间延迟。
9产生误差向量。
10统计错误比特:
误差向量“err”中的每一个非零元素对应着一个错误的比特。
最后计算误比特率BER:
每运行一次误比特率仿真,就需要传输和接收固定数量的比特,然后确定接收到的比特中有多少错误的。
使用MATLAB计算BER:
ber=te/length(tx)。
三、实验结果
MATLAB仿真程序如下:
%SimulationofBPSKAWGN
Max_SNR=10;
N_trials=1000;
N=200;
Eb=1;
ber_m=0;
fortrial=1:
1:
N_trials;
trial
msg=round(rand(1,N));
%1,0sequence
s=1-msg.*2;
%0-->
1,1-->
1
n=randn(1,N)+j.*randn(1,N);
%generateGuassianwhitenoise
ber_v=[];
forsnr_dB=1:
2:
Max_SNR
snr=10.^(snr_dB./10);
%snr(db)-->
snr(decimal)
N0=Eb./snr;
sgma=sqrt(N0./2);
y=sqrt(Eb).*s+sgma.*n;
y1=sign(real(y));
y2=(1-y1)./2;
%1,0sequence
error=sum(abs(msg-y2));
%errorbits
ber_snr=error./N;
%ber
ber_v=[ber_v,ber_snr];
end%forsnr
ber_m=ber_m+ber_v;
end
ber=ber_m./N_trials;
ber_theory=[];
forsnr_db=1:
snr=10.^(snr_db./10);
snr_1=qfunc(sqrt(2*snr));
ber_theory=[ber_theory,snr_1];
i=1:
Max_SNR;
semilogy(i,ber,'
-r'
i,ber_theory,'
*b'
);
xlabel('
E_b/N_0(dB)'
)
ylabel('
BER'
legend('
MonteCarlo'
'
Theoretic'
仿真结果如下:
四、实验小结
用蒙特卡罗分析方法得到的误码率曲线与理论公式
得到的误码率曲线吻合,可见蒙特卡罗分析是一种很好的分析误码率的方法。
从曲线中可以看出,随着信噪比的增加,误码率减小。
实验二:
移动信道建模的仿真分析
一、实验目的和意义
1.无线通信信道的建模与仿真是实现移动通信系统仿真与分析的基础,宽带无线通信与移动通信信道属频率选择性瑞利衰落信道模型。
2.通过信道设计实验
1掌握频率选择性信道模型的仿真建模方法。
2掌握模型中瑞利衰落系数的设计方法。
3掌握多径数目、功率和时延参数的设计。
4学会采用MATLAB语言对上述参数进行仿真。
二、实验方案和技术路线
1.选择路径数。
2.按均匀分布产生各条路径的延迟。
3.按功率时延谱确定对应的各径的功率。
4.按Jake模型产生各径的瑞利衰落系数。
5.对瑞利衰落系数进行统计分析并与理论值相比较。
说明:
1.路径数目2-4自己确定,或采用某个国际标准。
2.每条路径时间延迟满足(0,Tmax)范围内均匀分布,Tmax为自己选择的最大采样步长数200-600间比较合适,或采用国际标准。
3.功率可以按时延迟谱求得,也可用国际标准测量值。
功率延迟谱:
①若采用等功率分配产生功率:
Pi=Pt/M;
②采用指数分布的功率延迟谱产生功率:
P=1/6*exp(-t/6)。
%SimulationofJakesModel
clearall;
f_max=30;
M=8;
N=4*M+2;
Ts=1.024e-04;
sq=2/sqrt(N);
sigma=1/sqrt
(2);
theta=0;
count=0;
t0=0.001;
fort=0:
Ts:
0.5
count=count+1;
g(count)=0;
forn=1:
M+1,
ifn<
=M
c_i(count,n)=2*sigma*cos(pi*n/M);
%Gainassociatedwithinphasecomponent
c_q(count,n)=2*sigma*sin(pi*n/M);
%Gainassociatedwithquadraturecomponent
f_i(count,n)=f_max*cos(2*pi*n/N);
%Discretedopplerfrequenciesofinphasecomponent
f_q(count,n)=f_max*cos(2*pi*n/N);
%Discretedopplerfrequenciesofquadraturecomponent
else
c_i(count,n)=sqrt
(2)*cos(pi/4);
c_q(count,n)=sqrt
(2)*sin(pi/4);
f_i(count,n)=f_max;
f_q(count,n)=f_max;
end;
%endif
g_i(count,n)=c_i(count,n)*cos(2*pi*f_i(count,n)*(t-t0)+theta);
%Inphasecomponentforoneoscillator
g_q(count,n)=c_q(count,n)*cos(2*pi*f_q(count,n)*(t-t0)+theta);
%Quadraturecomponentforoneoscillator
%endn
tp(count)=sq*sum(g_i(count,1:
M+1));
%TotalInphasecomponent
tp1(count)=sq*sum(g_q(count,1:
%Totalquadraturecomponent
%endcountnonagain
envelope=sqrt(tp.^2+tp1.^2);
rmsenv=sqrt(sum(envelope.^2)/count);
[auto_i,lag_i]=xcorr(tp,'
coeff'
%Auto-correlationassociatedwithinphasecomponent
[auto_q,lag_q]=xcorr(tp1,'
%Auto-correlationassociatedwithquadraturecomponent
len=length(lag_i);
[corrx2,lag2]=xcorr(tp,tp1,'
aa=-(len-1)/2:
(len-1)/2;
%totaldurationforlag
bb=(len-2001)./2;
%mid...pointsfordrawingfigures
cc=bb+1:
bb+2001;
%forgettingthemid-values
dd=-1000:
1000;
%-----------
tdd=dd*Ts;
z=2.*pi.*f_max*tdd;
sigma0=1;
T_bessel=sigma0.^2.*besselj(0,z);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure;
plot(tdd,auto_i(cc),'
-'
tdd,T_bessel,'
*'
%in-phase
t(Second)'
Auto-correlation'
In-component'
plot(tdd,auto_q(cc),'
%quadrature
Q-component'
co1=1:
semilogy(co1*Ts,envelope(1:
1000));
RayleighCoef.'
%%------------
length_r=length(envelope);
%-------------
pdf_env=zeros(1,501);
temp=round(100.*envelope);
fork=1:
length_r
iftemp(k)<
=500
pdf_env(1,temp(k)+1)=pdf_env(1,temp(k)+1)+1;
end
count
pdf_env=pdf_env./count./0.01;
sgma2=0.5;
x=[0:
0.01:
5];
pdf_theory=(x./sgma2).*exp(-1.*x.^2./(2.*sgma2));
plot(x,pdf_env,'
x,pdf_theory,'
Simulated'
r'
PDFofr'
从图中可以看出,当t=0即没有时延差的时候,每条路经包络的同向分量与正交分量的自相关系数为1,这是最理想的情况。
包络的大小随时延差的改变发生波动,包络概率密度曲线的统计值与理论值相近,满足瑞利分布。
实验三:
CDMA通信系统仿真
1.CDMA通信具有很多通信特点,不仅被IS-95移动通信系统使用,目前已成为3G的主要技术。
2.通过实验:
①掌握直接序列扩频发射机与接收机的组成与仿真;
②仿真验证AWGN信道下单用户直接序列扩频系统的BER性能;
③仿真验证平坦瑞利信道下单用户直接序列扩频系统的BER性能;
④观察存在干扰用户时的系统性能变化。
二、基本原理与方案
仿真基带直接序列扩频系统:
1.采用BPSK或QPSK映射。
2.扩频序列可以是随机产生,可以是m序列,也可以是Gold码,长度自选。
3.最后对BER或SER随信噪比变化画图与理论单用户的结果比较,并对仿真结果进行分析。
三、实验方案与技术路线
1.确定用户数目、信道特征以及调制方式。
2.确定基带扩频仿真系统的原理结构图,按照框图设计一个CDMA系统,并进行仿真。
3.用MATLAB进行仿真,统计BER或SER随信噪比的关系,绘出曲线。
4.对统计试验的结果与单用户的理论值进行比较。
5.对仿真结果进行分析。
四、实验结果
%main_IS95_forward.m
%此函数用于IS-95前向链路系统的仿真,包括扩
%频调制,匹配滤波,RAKE接收等相关通信模块。
%仿真环境:
加性高斯白噪声信道.
%数据速率=9600KBps
%
clearall
closeall
clc
disp('
--------------start-------------------'
globalZiZqZsshowRGiGq
clearj;
show=0;
%控制程序运行中的显示
SD=0;
%选择软/硬判决接收
%-------------------主要的仿真参数设置------------------
BitRate=9600;
%比特率
ChipRate=1228800;
%码片速率
N=184;
%源数据数
MFType=1;
%匹配滤波器类型--升余弦
R=5;
%+++++++++++++++++++Viterbi生成多项式++++++++++++++++++
G_Vit=[111101011;
101110001];
%Viterbi生成多项式矩阵
K=size(G_Vit,2);
%列数
L=size(G_Vit,1);
%行数
%++++++++++++++++++++++++++++++++++++++++++++++++++++++
%++++++++++++++++++++++Walsh矩阵++++++++++++++++++++++++
WLen=64;
%walsh码的长度
Walsh=reshape([1;
0]*ones(1,WLen/2),WLen,1);
%32个10行
%Walsh=zeros(WLen,1);
%++++++++++++++++++扩频调制PN码的生成多项式++++++++++++++
%Gi=[1010001110100001]'
;
%Gq=[1001110001111001]'
Gi_ind=[15,13,9,8,7,5,0]'
%i路PN码生成多项式参数
Gq_ind=[15,12,11,10,6,5,4,3,0]'
%q路PN码生成多项式参数
Gi=zeros(16,1);
%16×
1的0矩阵
Gi(16-Gi_ind)=ones(size(Gi_ind));
%根据Gi_ind配置i路PN码生成多项式
Zi=[zeros(length(Gi)-1,1);
1];
%I路信道PN码生成器的初始状态
Gq=zeros(16,1);
Gq(16-Gq_ind)=ones(size(Gq_ind));
%根据Gq_ind配置q路PN码生成多项式
Zq=[zeros(length(Gq)-1,1);
%Q路信道PN码生成器的初始状态
%+++++++++++++++++++扰码生成多项式++++++++++++++++++++++
Gs_ind=[42,35,33,31,27,26,25,22,21,19,18,17,16,10,7,6,5,3,2,1,0]'
Gs=zeros(43,1);
%43×
Gs(43-Gs_ind)=ones(size(Gs_ind));
%根据Gs_ind配置扰码生成多项式
Zs=[zeros(length(Gs)-1,1);
%长序列生成器的初始状态
%++++++++++++++++++++++++++++++++++++++++++++++++++++++
%++++++++++++++++++++++AWGN信道++++++++++++++++++++++++
EbEc=10*log10(ChipRate/BitRate);
%处理增益
EbEcVit=10*log10(L);
EbNo=[-1:
0.5:
%仿真信噪比范围(dB)
%EbNo=[-2:
-1.5];
%------------------------------------------------------
%-------------------------主程序-------------------------
ErrorsB=[];
ErrorsC=[];
NN=[];
if(SD==1)%判断软/硬判决接收
fprintf('
\nSOFTDecisionViterbiDecoder\n\n'
else
\nHARDDecisionViterbiDecoder\n\n'
end
fori=1:
length(EbNo)%根据EbNo多次运行
\nProcessing%1.1f(dB)'
EbNo(i));
%输出当前EbNo值
iter=0;
ErrB=0;
ErrC=0;
while(ErrB<
300)&
(iter<
150)
drawnow;
%++++++++++++++++++++++发射机+++++++++++++++++++++++
TxData=(randn(N,1)>
0);
%生成源数据
%速率为19.2Kcps
[TxChips,Scrambler]=PacketBuilder(TxData,G_Vit,Gs);
%产生IS-95前向链路系统的发送数据包
%速率为1.2288Mcps
[xPNMF]=Modulator(TxChips,MFType,Walsh);
%实现IS-95前向链路系统的数据调制
%++++++++++++++++++++++++++++++++++++++++++++++++++++++
%++++++++++++++++++++++++信道+++++++++++++++++++++++++++
noise=1/sqrt
(2)*sqrt(R/2)*(randn(size(x))+j*randn(size(x)))*10^(-(EbNo(i)-EbEc)/20);
%生成噪声序列
r=x+noise;
%加入噪声
%++++++++++++++++++++++++++++++++++++++++++++++++++++++
%+++++++++++++++++++++++++接收机++++++++++++++++++++++++
RxSD=Demodulator(r,PN,MF,Walsh);
%软判决,速率为19.2Kcps
RxHD=(RxSD>
%定义接收码片的硬判决
if(SD)
[RxDataMetric]=ReceiverSD(RxSD,G_Vit,Scrambler);
%软判决
else
[RxDataMetric]=ReceiverHD(RxHD,G_Vit,Scrambler);
%硬判决
end
if(show)
subplot(311);
plot(RxSD,'
-o'
title('
SoftDecisions'
%软判决结果图
subplot(312);
plot(xor(TxChips,RxHD),'
ChipErrors'
%RAKE接收机输入符号与发送码相比出错的码
subplot(313);
plot(xor(TxData,RxData),'
%硬判决接收机与发送数据相比的出错码
title(['
DataBitErrors.Metric='
num2str(Metric)]);
pause;
if(mod(iter,50)==0)%每50次保存一次
.'
saveTempResultsErrBErrCNiter%保存结果
ErrB=ErrB+sum(xor(RxData,TxData));
%求出错比特数
ErrC=ErrC+sum(xor(RxHD,TxChips));
%求出错码数
iter=iter+1;
%迭代次数
ErrorsB=[ErrorsB;
ErrB];
%存储各EbNo值下的出错比特数
ErrorsC=[ErrorsC;
ErrC];
%存储各EbNo值下的出错码数
NN=[NN;
N*iter];
%存储各EbNo值下的总数据码数目
saveSimData*%保存当前迭代的数据
%+++++++++++++++++++++++++误码率计算++++++++++++++++++++++++
PerrB=ErrorsB./NN;
%出错比特比例
%PerrB1=ErrorsB1./NN1;
PerrC=ErrorsC./NN;
%出错码比