通信原理实验二QPSK通信系统的MonteCarlo仿真Word下载.docx
- 文档编号:21836264
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:20
- 大小:317.82KB
通信原理实验二QPSK通信系统的MonteCarlo仿真Word下载.docx
《通信原理实验二QPSK通信系统的MonteCarlo仿真Word下载.docx》由会员分享,可在线阅读,更多相关《通信原理实验二QPSK通信系统的MonteCarlo仿真Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
最佳检测器将接收信号向量r投射到M个可能的传输信号向量{
}之一上去,并选取对应于最大投影的向量。
据此,得到相关准则为
m=[0,M-1]
检测器观察到接收信号向量
,并计算r在4种可能的信号向量
上的投影。
根据选取对应于最大投影的信号点作为判决,从而判决出信号。
同时,检测器的判决准则也可采用最小距离法,即利用星座图上符号间的距离进行判决,从而得到判决结果。
二.MonteCarlo仿真过程
仿真框图如图
(一)
图
(一)用于MonteCarlo仿真的4PSK系统的方框图
如图所示,利用一个随机数发生器,产生(0,1)范围内的随机数。
再将这个范围分成四个相等的区间(0,0.25),(0.25,0.5),(0.5,0.75),(0.75,1.0),这些子区间分别对应于00,01,11,10信息比特对,再用这些比特对来选择信号相位向量
。
加性噪声的同相分量和正交分量,在上面讨论过,即为零均值,方差为的统计独立的高斯随机变量。
在检测器观察到的接收信号向量,利用上面讨论的两种检测方法,得到判决结果,并与传输符号作比较,最后对符号差错和比特差错计数
三、实验内容及程序分析(以下程序皆以N=1000为例)
%映射比较子函数
%函数分为四步第一步产生随机序列,进行4PSK映射。
%第二步:
调用高斯高斯噪声子函数,产生正交两路高斯噪声,与输出符号序列相加
%第三步:
检测接受信号
%第四步:
计算误码率和误比特率
N=1000;
%符号长度
E=1;
%计算噪声方差
sgma=input('
方差='
);
sgma=sqrt(sgma);
%4PSK比特映射
s00=[10];
s01=[01];
s11=[-10];
s10=[0-1];
%第一步产生随机序列,进行4PSK映射。
生成随机信源
fori=1:
N,%生成随机信源
temp=rand;
if(temp<
0.25),%Withprobability1/4,sourceoutputis"
00."
dsource1(i)=0;
dsource2(i)=0;
elseif(temp<
0.5),%Withprobability1/4,sourceoutputis"
01."
dsource2(i)=1;
0.75),%Withprobability1/4,sourceoutputis"
10."
dsource1(i)=1;
else%Withprobability1/4,sourceoutputis"
11."
end;
end;
numofsymbolerror=0;
%检测错误并计算错误率
numofbiterror=0;
N,
[gsrv1,gsrv2]=gnguass(0,sgma);
%调用高斯噪声子函数
n
(1)=gsrv1;
n
(2)=gsrv2;
if((dsource1(i)==0)&
(dsource2(i)==0)),
r=s00+n;
elseif((dsource1(i)==0)&
(dsource2(i)==1)),
r=s01+n;
elseif((dsource1(i)==1)&
r=s10+n;
else
r=s11+n;
%第三步:
c00=sqrt((r
(1)-s00
(1))^2+(r
(2)-s00
(2))^2);
%最小距离判决
c01=sqrt((r
(1)-s01
(1))^2+(r
(2)-s01
(2))^2);
c10=sqrt((r
(1)-s10
(1))^2+(r
(2)-s10
(2))^2);
c11=sqrt((r
(1)-s11
(1))^2+(r
(2)-s11
(2))^2);
c_min=min([c00c01c10c11]);
if(c00==c_min),
decis1=0;
decis2=0;
elseif(c01==c_min),
decis2=1;
elseif(c10==c_min),
decis1=1;
%第四步:
symbolerror=0;
%设置符号错误标志,以统计错误个数
if(decis1~=dsource1(i)),
numofbiterror=numofbiterror+1;
symbolerror=1;
if(decis2~=dsource2(i)),
if(symbolerror==1),
numofsymbolerror=numofsymbolerror+1;
ps=numofsymbolerror/N;
%错误率计算
pb=numofbiterror/(2*N);
pb
ps
结果统计如下:
sgma=0
最大投影准则:
pb=0.0ps=0.0
最小距离判决:
sgma=0.1
pb=5.0000e-004ps=1.0000e-003
pb=1.0000e-003ps=0.0020
sgma=0.5
pb=0.0690ps=0.1320
pb=0.0690ps=0.1360
sgma=1.0
pb=0.1345ps=0.2450
pb=0.1455ps=0.2680
>
%j化星座图函数
sgma=input('
%输入方差
%求sgma
%输入数据点数
%单个符号能量
%4PSK映射规则%
%化星座图
%产生信源序列%
N,%auniformrandomvariablebetween0and1
%随机序列
if(temp<
0.25),%Withprobability1/4,sourceoutputis"
0.5),%Withprobability1/4,sourceoutputis"
0.75),%Withprobability1/4,sourceoutputis"
else%Withprobability1/4,sourceoutputis"
%Thereceivedsignalatthedetector,fortheithsymbol,is:
r00=s00+n;
r01=s01+n;
r11=s10+n;
r10=s11+n;
holdon;
plot(r00
(1),r00
(2),'
*g'
r01
(1),r01
(2),'
*r'
r11
(1),r11
(2),'
*y'
r10
(1),r10
(2),'
*b'
title('
sgma^2='
主函数
%对M=4的PSK通信系统进行蒙特卡罗仿真%
echoon
SNRindB1=0:
2:
10;
SNRindB2=0:
0.1:
length(SNRindB1),%计算信噪比区间大小
[pb,ps]=cm_sm32(SNRindB1(i));
%仿真比特和符号误码率
smld_bit_err_prb(i)=pb;
%将误比特率赋值
smld_symbol_err_prb(i)=ps;
%将误码率赋值
length(SNRindB2),%计算信噪比区间大小
SNR=exp(SNRindB2(i)*log(10)/10);
%信噪比
theo_err_prb(i)=erfc(sqrt(2*SNR));
%理论比特误码率
%随后绘图曲线
semilogy(SNRindB1,smld_bit_err_prb,'
*'
hold
semilogy(SNRindB1,smld_symbol_err_prb,'
O'
semilogy(SNRindB2,theo_err_prb);
grid
xlabel('
Eb/NoindB'
)
ylabel('
errorprobability'
title('
4PSK通信系统的蒙特卡洛仿真'
gtext('
(注:
“—”理论误码率;
“*”误比特率;
“o”误符号率)'
左:
最大投影点准则判决右:
最小距离判决
N=1000
N=5000
N=10000
%函数分为七步
%第一步:
产生随机序列
实现4码到7码的变换
进行4PSK映射。
%第五步:
7码到4码的解码
%第六步:
进行码元检测%
%第七步:
噪声方差='
%输入噪声方差
Eb=1;
%每比特能量
N=input('
数据点数='
%第一步产生随机序列
N
if(temp>
0.5)
source(i)=1;
source(i)=0;
end
end
%(7,4)汉明编码
fork=1:
N/4
out(7*k-6)=source(4*k-3);
out(7*k-5)=source(4*k-2);
out(7*k-4)=source(4*k-1);
out(7*k-3)=source(4*k);
out(7*k-2)=xor(xor(out(7*k-6),out(7*k-5)),out(7*k-4));
out(7*k-1)=xor(xor(out(7*k-6),out(7*k-5)),out(7*k-3));
out(7*k)=xor(xor(out(7*k-6),out(7*k-4)),out(7*k-3));
%s00=[10]
%s01=[01]
%s11=[-10]
%s10=[0-1]
%进行4PSK映射%
N/2
if(source(2*i-1)==0&
&
source(2*i)==0)
s=s00;
elseif(source(2*i-1)==0&
source(2*i)==1)
s=s01;
elseif(source(2*i-1)==1&
s=s10;
s=s11;
调用高斯高斯噪声子函数,产生正交两路高斯噪声,与输出符号序列相加[n
(1),n
(2)]=gnguass(0,sgma);
%调用gnguass函数
r=s+n;
%(7,4)汉明解码%
N/4
jiema(4*k-3)=out(7*k-6);
jiema(4*k-2)=out(7*k-5);
jiema(4*k-1)=out(7*k-4);
jiema(4*k)=out(7*k-3);
%最大投影点准则%
c00=dot(r,s00);
%取r在s00上的投影
c01=dot(r,s01);
%取r在s01上的投影
c10=dot(r,s10);
%取r在s10上的投影
c11=dot(r,s11);
%取r在s11上的投影
c_max=max([c00c01c10c11]);
%取c00,c01,c10,c11中的最大值
if(c00==c_max),
decis2=0;
elseif(c01==c_max),
decis2=1;
elseif(c10==c_max),
out(2*i-1)=decis1;
out(2*i)=decis2;
%计算符号差错概率%
symbolerror=0;
if(out(2*i-1)~=source(2*i-1)||out(2*i)~=source(2*i))
symbolerror=symbolerror+1;
ps=2*symbolerror/N;
%计算比特差错概率
biterror=0;
if(out(i)~=source(i))
biterror=biterror+1;
pb=biterror/N;
1、高斯白噪声子函数
function[gsrv1,gsrv2]=gnguass(m,sgma)
ifnargin==0
m=0;
sgma=1;
elseifnargin==1
sgma=m;
u=rand;
z=sgma*sqrt(2*log10(1/(1-u)));
gsrv1=m+z*cos(2*pi*u);
gsrv2=m+z*sin(2*pi*u);
函数评注:
编程产生正交两路高斯白噪声
2、映射检测比较子函数
(1)、采用最大投影准则
function[pb,ps]=cm_sm32(snr_in_dB)
%[pb,ps]=cm_sm32(snr_in_dB)
%pb误符号率
%ps误比特率
%计算噪声方差
snr=10^(snr_in_dB/10);
sgma=sqrt(E/snr/2);
%比特映射
N,%生成随机信源
c00=dot(r,s00);
%最大投影点准则,即向量点乘积
c01=dot(r,s01);
c10=dot(r,s10);
c11=dot(r,s11);
c_max=max([c00c01c10c11]);
elseif(c01==c_max),
elseif(c10==c_max),
%错误率计算
(2)最小距离判别法(只需将上面红色部分改为下面程序即可)
c00=sqrt((r
(1)-s00
(1))^2+(r
(2)-s00
(2))^2);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 原理 实验 QPSK 系统 MonteCarlo 仿真