MATLAB仿真报告Word文件下载.docx
《MATLAB仿真报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真报告Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
![MATLAB仿真报告Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/19/2d29910f-6515-46e2-b1cf-d5499f96cd09/2d29910f-6515-46e2-b1cf-d5499f96cd091.gif)
%设置每个循环中的符号数
snr_in_dB=[0:
15];
ber=zeros(1,length(snr_in_dB));
forsnr_num=1:
length(snr_in_dB)
SNR=exp(snr_in_dB(snr_num)*log(10)/10);
nloop=100;
%循环次数
noe=0;
%错误数
nod=0;
%传输的数量
foriii=1:
nloop
data1=rand(1,nd)>
0.5;
data2=2.*data1-1;
%以下为衰减量的计算
%在瑞利信道下
code_rate=1;
E=1;
sigma=E/sqrt(2*SNR*code_rate);
n=[randn(1,nd)+j*randn(1,nd)];
h1=1/sqrt
(2)*[randn(1,nd)+j*randn(1,nd)];
%瑞利信道
data41=data2.*h1+sigma.*n;
h11=conj(h1);
%计算信道质量指数的复共轭
data411=data41.*h11;
%计算组合后的价值
%*****************************************
h2=1/sqrt
(2)*[randn(1,nd)+j*randn(1,nd)];
data42=data2.*h2+sigma.*n;
h22=conj(h2);
data422=data42.*h22;
data4=data411+data422;
%在两个不相关的信道下的信号进行组合
%BPSK解调
demodata1=data4>
0;
%误码率
noe2=sum(abs(data1-demodata1));
nod2=length(data1);
noe=noe+noe2;
nod=nod+nod2;
end
%输出结果
ber(snr_num)=noe/nod
end;
%结尾
figure;
semilogy(snr_in_dB,ber,'
O-'
);
holdon
semilogy(snr_in_dB,0.5*erfc(sqrt(2*10.^(snr_in_dB/10))/sqrt
(2)),'
+-'
semilogy(snr_in_dB,0.5.*(1-sqrt((10.^(snr_in_dB/10))./(10.^(snr_in_dB/10)+1))),'
-'
ylabel('
BER'
xlabel('
E_b/N_0[dB]'
legend('
simulationBPSKMRCL=2'
'
theorygngaussBPSK'
theoryreyleigh'
);
BPSKEGC.m注释
%设置循环次数
%错误数量
%传输数量
%衰减量的计算
%瑞利信道下
h11=conj(h1)./abs(h1);
%取信道质量指数的单位向量
%计算组合后在信道1下的价值
%瑞利信道
h22=conj(h2)./abs(h2);
%BPSK解调
%误码率计算
%结果输出
ber1(snr_num)=noe/nod
semilogy(snr_in_dB,ber1,'
simulationBPSKEGCL=2'
BPSKSEL.m注释
snr_in_dB=0:
15;
fork=1:
k
N=10000;
E=1;
SNR=10^(snr_in_dB(k)/10);
sigma=E/sqrt(2*SNR);
fori=1:
N
a=rand;
if(a<
0.5)
data(i)=-1;
else
data(i)=1;
numofber=0;
totolnumber=0;
whilenumofber<
1
totolnumber=totolnumber+1;
H1=1/sqrt
(2)*[rand+j*rand];
%第一个瑞利信道
H2=1/sqrt
(2)*[rand+j*rand];
%第二个瑞利信道
H=[H1;
H2];
y1=H
(1)*data(i)+sigma*(rand+j*rand);
%在第一个信道下计算数据
y2=H
(2)*data(i)+sigma*(rand+j*rand);
%在第二个信道下计算数据
y=[abs(y1),abs(y2)];
s=max(y);
%选择其中最大的数据
if(s==abs(y2))
s=y2/H2;
else
s=y1/H1;
end
data2=sign(real(s));
if(data2~=data(i))
numofber=numofber+1;
%计算误比特率
p(k)=numofber/(N*totolnumber);
%计算误码率
semilogy(snr_in_dB,p,'
simulationBPSKSELL=2'
(b)观察信噪比变化10dB,误比特率变化多少?
MRC误比特率变化:
0.0588-0.0017=0.0571
EGC误比特率变化:
0.0650-0.0018=0.0632
SEL误比特率变化:
0.1733-0.0030=0.1703
(c)程序中给出的是2分集,将其换为3分集,观察信噪比变化10dB,误比特率变化多少?
MRC误比特率变化:
0.0248-0.0001=0.0247
EGC误比特率变化:
0.0330-0.0002=0.0328
SEl误比特率变化:
0.1780-0.0003=0.1777
(d)将最大比合并和等增益合并及选择式合并的误比特率曲线,画在一张图上,比较这三种合并方法的优劣。
由图可得,MRC方法所得到的误码率是最小的,性能也最稳定;
EGC方法在误码率和稳定性方面次之;
SEL方法在同一SNR下得到的误码率最高,而且稳定性很差,有时候能够得到比MRC、EGC更低的误码率,有时候就不行,增大SNR只能使BER总体趋向下降,不保证增大SNR就能直接降低BER。
二、调制解调仿真
现给出bpsk、qpsk及“书上习题”的调制解调程序,理解各程序,完成以下习题。
1.用matlab运行书上习题中的“bpskqpsk125.m”
(a)说明bpsk、qpsk解调判决方法
答:
由该m文件可得,其中的判决设置为:
BPSK:
ifa(zeromean)noisesampleislargerthansqrt(Eb)awrongdecsionismade.
如果一个噪声的样值比平均比特能量大的话,那么就会产生错误的判决。
QPSK:
iftheconstellationpointangleiswithinpi/4ang-pi/4acorerectdecisionismade.
如果星座点上的角偏差在pi/4和-pi/4之间的话,判决就正确了。
(b)误比特率为1e-2、1e-3及1e-4时的Eb/N0分别是多少?
运行该程序,可以得出如下的图像:
当误