通信原理实验二QPSK通信系统的MonteCarlo仿真.docx

上传人:b****1 文档编号:11163495 上传时间:2023-05-29 格式:DOCX 页数:24 大小:317.76KB
下载 相关 举报
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第1页
第1页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第2页
第2页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第3页
第3页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第4页
第4页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第5页
第5页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第6页
第6页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第7页
第7页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第8页
第8页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第9页
第9页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第10页
第10页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第11页
第11页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第12页
第12页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第13页
第13页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第14页
第14页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第15页
第15页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第16页
第16页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第17页
第17页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第18页
第18页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第19页
第19页 / 共24页
通信原理实验二QPSK通信系统的MonteCarlo仿真.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

通信原理实验二QPSK通信系统的MonteCarlo仿真.docx

《通信原理实验二QPSK通信系统的MonteCarlo仿真.docx》由会员分享,可在线阅读,更多相关《通信原理实验二QPSK通信系统的MonteCarlo仿真.docx(24页珍藏版)》请在冰点文库上搜索。

通信原理实验二QPSK通信系统的MonteCarlo仿真.docx

通信原理实验二QPSK通信系统的MonteCarlo仿真

 

通信原理实验二

 

QPSK通信系统的MonteCarlo仿真

 

一、实验目的

1、提高独立学习的能力;

2、培养发现问题、解决问题和分析问题的能力;

3、学习Matlab的使用;

4、掌握4PSK通信系统的MonteCarlo仿真方法;

5、掌握4PSK通信系统的的组成原理;

6、比较编码信号和为编码信号在随机信道中的传输,加深对纠错编码的理解;

二、系统框图及编程原理

实验原理

PSK是利用载波的不同相位表示相应的数字信息。

对于二进制相位调制(M=2)来说,两个载波相位是0和π。

对于M相相位调制来说M=2k,这里k是每个传输符号的信息比特数。

4PSK是M=4的载波相位调制。

这里,将理论差错概率与仿真的差错概率比较,进一步观察仿真与理论值之间的差别。

同时,用不同的判决准则对接受信号进行判决。

并比较两种判别方法的差别。

一.QPSK调制原理

1.信号能量分析

一组M载波相位调制信号波形的一般表示式为

m=[0,M-1]

式中

是发送滤波器的脉冲形状,它决定了传输信号的频谱特性,A是信号的幅度。

注意到,PSK信号对所有m都具有相等的能量,即

代表每个传输符号的能量。

2.噪声分析

传输信号的信道假设被加性噪声n(t)所污损,这样信号在接收端将产生误码。

因为n(t)是功率谱为

的白高斯过程的一个样本函数,所以噪声分量

就是零均值高斯型的,即

3.信号判决分析

最佳检测器将接收信号向量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."

dsource1(i)=0;

dsource2(i)=1;

elseif(temp<0.75),%Withprobability1/4,sourceoutputis"10."

dsource1(i)=1;

dsource2(i)=0;

else%Withprobability1/4,sourceoutputis"11."

dsource1(i)=1;

dsource2(i)=1;

end;

end;

numofsymbolerror=0;%检测错误并计算错误率

numofbiterror=0;

%第二步:

调用高斯高斯噪声子函数,产生正交两路高斯噪声,与输出符号序列相加

fori=1:

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)&(dsource2(i)==0)),

r=s10+n;

else

r=s11+n;

end;

%第三步:

检测接受信号

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),

decis1=0;decis2=1;

elseif(c10==c_min),

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;

ps=numofsymbolerror/N;%错误率计算

pb=numofbiterror/(2*N);

pb

ps

结果统计如下:

sgma=0

最大投影准则:

pb=0.0ps=0.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=sqrt(sgma);%求sgma

N=1000;%输入数据点数

E=1;%单个符号能量

%4PSK映射规则%

s00=[10];

s01=[01];

s11=[-10];

s10=[0-1];

%化星座图

%产生信源序列%

fori=1:

N,%auniformrandomvariablebetween0and1

temp=rand;%随机序列

if(temp<0.25),%Withprobability1/4,sourceoutputis"00."

dsource1(i)=0;

dsource2(i)=0;

elseif(temp<0.5),%Withprobability1/4,sourceoutputis"01."

dsource1(i)=0;

dsource2(i)=1;

elseif(temp<0.75),%Withprobability1/4,sourceoutputis"10."

dsource1(i)=1;

dsource2(i)=0;

else%Withprobability1/4,sourceoutputis"11."

dsource1(i)=1;

dsource2(i)=1;

end;

end;

fori=1:

N,

%Thereceivedsignalatthedetector,fortheithsymbol,is:

[gsrv1,gsrv2]=gnguass(0,sgma);

n

(1)=gsrv1;

n

(2)=gsrv2;

if((dsource1(i)==0)&(dsource2(i)==0)),

r00=s00+n;

elseif((dsource1(i)==0)&(dsource2(i)==1)),

r01=s01+n;

elseif((dsource1(i)==1)&(dsource2(i)==0)),

r11=s10+n;

else

r10=s11+n;

end;

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=');

end;

 

 

主函数

%对M=4的PSK通信系统进行蒙特卡罗仿真%

echoon

SNRindB1=0:

2:

10;

SNRindB2=0:

0.1:

10;

fori=1:

length(SNRindB1),%计算信噪比区间大小

[pb,ps]=cm_sm32(SNRindB1(i));%仿真比特和符号误码率

smld_bit_err_prb(i)=pb;%将误比特率赋值

smld_symbol_err_prb(i)=ps;%将误码率赋值

end;

fori=1:

length(SNRindB2),%计算信噪比区间大小

SNR=exp(SNRindB2(i)*log(10)/10);%信噪比

theo_err_prb(i)=erfc(sqrt(2*SNR));%理论比特误码率

end;

%随后绘图曲线

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码的解码

%第六步:

进行码元检测%

%第七步:

计算误码率和误比特率

sgma=input('噪声方差=');%输入噪声方差

sgma=sqrt(sgma);%求sgma

Eb=1;%每比特能量

N=input('数据点数=');%输入数据点数

%第一步产生随机序列

fori=1:

N

temp=rand;%随机序列

if(temp>0.5)

source(i)=1;

else

source(i)=0;

end

end

%(7,4)汉明编码

%第二步:

实现4码到7码的变换

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));

end

%第三步:

进行4PSK映射。

s00=[10];%s00=[10]

s01=[01];%s01=[01]

s11=[-10];%s11=[-10]

s10=[0-1];%s10=[0-1]

%进行4PSK映射%

fori=1:

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&&source(2*i)==0)

s=s10;

elseif(source(2*i-1)==1&&source(2*i)==1)

s=s11;

end

%第四步:

调用高斯高斯噪声子函数,产生正交两路高斯噪声,与输出符号序列相加[n

(1),n

(2)]=gnguass(0,sgma);%调用gnguass函数

r=s+n;

%(7,4)汉明解码%

%第五步:

7码到4码的解码

fork=1:

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);

end

%第六步:

进行码元检测%

%最大投影点准则%

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),

decis1=0;decis2=0;

elseif(c01==c_max),

decis1=0;decis2=1;

elseif(c10==c_max),

decis1=1;decis2=0;

else

decis1=1;decis2=1;

end

out(2*i-1)=decis1;

out(2*i)=decis2;

end

%第七步:

计算误码率和误比特率

%计算符号差错概率%

symbolerror=0;

fori=1:

N/2

if(out(2*i-1)~=source(2*i-1)||out(2*i)~=source(2*i))

symbolerror=symbolerror+1;

end

end

ps=2*symbolerror/N;

%计算比特差错概率

biterror=0;

fori=1:

N

if(out(i)~=source(i))

biterror=biterror+1;

end

end

pb=biterror/N;

1、高斯白噪声子函数

function[gsrv1,gsrv2]=gnguass(m,sgma)

ifnargin==0

m=0;

sgma=1;

elseifnargin==1

sgma=m;

m=0;

end

u=rand;

z=sgma*sqrt(2*log10(1/(1-u)));

u=rand;

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误比特率

N=1000;%符号长度

E=1;%计算噪声方差

snr=10^(snr_in_dB/10);

sgma=sqrt(E/snr/2);

s00=[10];%比特映射

s01=[01];

s11=[-10];

s10=[0-1];

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."

dsource1(i)=0;

dsource2(i)=1;

elseif(temp<0.75),%Withprobability1/4,sourceoutputis"10."

dsource1(i)=1;

dsource2(i)=0;

else%Withprobability1/4,sourceoutputis"11."

dsource1(i)=1;

dsource2(i)=1;

end;

end;

numofsymbolerror=0;%检测错误并计算错误率

numofbiterror=0;

fori=1:

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)&(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);

c_max=max([c00c01c10c11]);

if(c00==c_max),

decis1=0;decis2=0;

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;

ps=numofsymbolerror/N;%错误率计算

pb=numofbiterror/(2*N);

(2)最小距离判别法(只需将上面红色部分改为下面程序即可)

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),

decis1=0;decis2=1;

elseif(c10==c_min),

decis1=1;decis2=0;

else

decis1=1;decis2=1;

end;

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2