信号检测与估值matlab仿真报告.docx
- 文档编号:7663179
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:11
- 大小:38KB
信号检测与估值matlab仿真报告.docx
《信号检测与估值matlab仿真报告.docx》由会员分享,可在线阅读,更多相关《信号检测与估值matlab仿真报告.docx(11页珍藏版)》请在冰豆网上搜索。
信号检测与估值matlab仿真报告
信号检测与估值仿真报告
作业1
试编写程序,画出相干移频键控、非相干移频键控(无衰落)和瑞利衰落信道下非相干移频键控的性能曲线。
(1)根据理论分析公式画性能曲线;
(2)信噪比范围(0dB-10dB),间隔是1dB;
(3)信噪比计算SNR=10lg(Es/N0)
一、脚本文件
1、主程序
%********************************************************
%二元移频信号检测性能曲线(理论分析)
%FSK_theo.m
%********************************************************
clearall;
clc;
SNRindB=0:
1:
20;
Pe_CFSK=zeros(1,length(SNRindB));
Pe_NCFSK=zeros(1,length(SNRindB));
Pe_NCFSK_Rayleigh=zeros(1,length(SNRindB));
fori=1:
length(SNRindB)
EsN0=exp(SNRindB(i)*log(10)/10);
Es_aveN0=exp(SNRindB(i)*log(10)/10);
Pe_CFSK(i)=Qfunct(sqrt(EsN0));%相干移频键控系统
Pe_NCFSK(i)=0.5*exp(-EsN0/2);%非相干移频键控系统(无衰落)
Pe_NCFSK_Rayleigh(i)=1/(2+Es_aveN0);%非相干移频键控系统(瑞利衰落)
end
semilogy(SNRindB,Pe_CFSK,'-o',SNRindB,Pe_NCFSK,'-*',SNRindB,Pe_NCFSK_Rayleigh,'-');
xlabel('Es/No或平均Es/No(dB)');
ylabel('最小平均错误概率Pe');
legend('相干移频','非相干移频(无衰落)','非相干移频(瑞利衰落)');
title('二元移频信号检测性能曲线');
axis([02010^-71]);
gridon;
2、调用子函数
%********************************************************
%Q函数
%Qfunct.m
%********************************************************
function[y]=Qfunct(x)
%[y]=Qfunct(x)
%QFUNCTevaluatestheQ-function.
%y=1/sqrt(2*pi)*integralfromxtoinfofexp(-t^2/2)dt.
%y=(1/2)*erfc(x/sqrt
(2)).
y=(1/2)*erfc(x/sqrt
(2));
二、仿真结果
作业2
试编写程序,仿真BPSK,4PSK调制信号在高斯信道下的性能,画出误码率(误比特和误符号)的性能曲线,并与理论分析结果相比。
一、BPSK脚本文件及仿真结果
1、主程序
%********************************************************
%BPSK调制信号在AWGN下的蒙特卡罗仿真
%BPSK_MC.m
%********************************************************
clearall;
clc;
SNRindB1=0:
1:
10;
SNRindB2=0:
0.5:
10;
smld_err_prb=zeros(1,length(SNRindB1));
theo_err_prb=zeros(1,length(SNRindB2));
fori=1:
length(SNRindB1),
%simulatederrorrate
smld_err_prb(i)=sm_BPSK(SNRindB1(i));
end;
fori=1:
length(SNRindB2),
EsN0=exp(SNRindB2(i)*log(10)/10);
%theoreticalerrorrate
theo_err_prb(i)=Qfunct(sqrt(2*EsN0));
end;
%Plottingcommandsfollow
semilogy(SNRindB1,smld_err_prb,'*',SNRindB2,theo_err_prb,'-');
xlabel('Es/No(dB)');
ylabel('误码率');
title('BPSK调制信号在AWGN下的蒙特卡罗仿真');
legend('仿真误码率','理论误码率');
gridon;
2、调用子函数
%********************************************************
%计算BPSK的仿真误码率(误符号率=误比特率)
%sm_BPSK.m
%********************************************************
function[p]=sm_BPSK(snr_in_dB)
%[p]=sm_BPSK(snr_in_dB)
%sm_BPSKsimulatestheprobabilityoferrorfortheparticular
%valueofsnr_in_dB,signaltonoiseratioindB.
Es=1;
EsN0=exp(snr_in_dB*log(10)/10);%signaltonoiseratio
sgma=Es/sqrt(2*EsN0);%sigma,standarddeviationofnoise
N=10^7;%统计量
%产生二进制数据源
dsource=zeros(1,N);
fori=1:
N,
temp=rand;%auniformrandomvariableover(0,1)
if(temp<0.5),
dsource(i)=0;%withprobability1/2,sourceoutputis0
else
dsource(i)=1;%withprobability1/2,sourceoutputis1
end
end;
numoferr=0;
fori=1:
N,
%接收信号(信号映射,加性高斯白噪声)
if(dsource(i)==0),
r=-Es+gngauss(sgma);%ifthesourceoutputis"0"
else
r=Es+gngauss(sgma);%ifthesourceoutputis"1"
end;
%信号判决
if(r<0),
decis=0;%decisionis"0"
else
decis=1;%decisionis"1"
end;
%计算误符号率=误比特率
if(decis~=dsource(i)),%ifitisanerror,increasetheerrorcounter
numoferr=numoferr+1;
end;
end;
p=numoferr/N;%probabilityoferrorestimate
%******************************************************
%产生加性高斯白噪声
%gngauss.m
%******************************************************
function[gsrv1,gsrv2]=gngauss(m,sgma)
%[gsrv1,gsrv2]=gngauss(m,sgma)
%[gsrv1,gsrv2]=gngauss(sgma)
%[gsrv1,gsrv2]=gngauss
%GNGAUSS产生两个均值为m、标准差为sgma的、互相独立的
%高斯随机变量。
如果缺少其中一个输入参数,则取均值
%为0。
如果既没有给出均值也没有给出方差,本函数将
%产生两个标准高斯随机变量。
ifnargin==0,
m=0;sgma=1;
elseifnargin==1,
sgma=m;m=0;
end;
u=rand;%在区间(0,1)内的均匀随机变量
z=sgma*(sqrt(2*log(1/(1-u))));%瑞利分布随机变量
u=rand;%在区间(0,1)内的均匀随机变量
gsrv1=m+z*cos(2*pi*u);
gsrv2=m+z*sin(2*pi*u);
3、仿真结果
二、QPSK脚本文件及仿真结果
1、主程序
%********************************************************
%QPSK调制信号在AWGN下的蒙特卡罗仿真
%QPSK_MC.m
%********************************************************
clearall;
clc;
SNRindB1=0:
1:
14;%设置仿真信噪比范围
SNRindB2=0:
0.1:
14;%理论计算信噪比范围
smld_bit_err_prb=zeros(1,length(SNRindB1));
smld_symbol_err_prb=zeros(1,length(SNRindB1));
theo_bit_err_prb=zeros(1,length(SNRindB2));
theo_symbol_err_prb=zeros(1,length(SNRindB2));
fori=1:
length(SNRindB1),
[pb,ps]=sm_QPSK(SNRindB1(i));%仿真比特和符号错误概率
smld_bit_err_prb(i)=pb;%pb表示误比特率
smld_symbol_err_prb(i)=ps;%ps表示误符号率
end;
fori=1:
length(SNRindB2),
SNR=exp(SNRindB2(i)*log(10)/10);%信噪比SNR=Es/N0
theo_bit_err_prb(i)=Qfunct(sqrt(SNR));%计算理论误比特率
theo_symbol_err_prb(i)=2*Qfunct(sqrt(SNR));%计算理论误符号率
end;
semilogy(SNRindB1,smld_bit_err_prb,'o');%画图
holdon
semilogy(SNRindB1,smld_symbol_err_prb,'*');
semilogy(SNRindB2,theo_bit_err_prb,'-');
semilogy(SNRindB2,theo_symbol_err_prb,'-.');
xlabel('Es/No(dB)');
ylabel('误码率');
title('QPSK调制信号在AWGN下的蒙特卡罗仿真');
legend('仿真误比特率','仿真误符号率','理论误比特率','理论误符号率');
gridon;
2、调用子函数
%********************************************************
%计算QPSK的仿真误码率(包括误符号率和误比特率)
%sm_QPSK.m
%********************************************************
function[pb,ps]=sm_QPSK(snr_in_dB)
N=10^7;
Es=1;
snr=10^(snr_in_dB/10);
sgma=sqrt(Es/snr/2);
%QPSK信号映射(Gray码)
s00=[10];
s01=[01];
s11=[-10];
s10=[0-1];
%产生四进制数据源
dsource1=zeros(1,N);
dsource2=zeros(1,N);
fori=1:
N,
temp=rand;
if(temp<0.25),
dsource1(i)=0;
dsource2(i)=0;
elseif(temp<0.5),
dsource1(i)=0;
dsource2(i)=1;
elseif(temp<0.75),
dsource1(i)=1;
dsource2(i)=0;
else
dsource1(i)=1;
dsource2(i)=1;
end;
end;
numofsymbolerror=0;
numofbiterror=0;
fori=1:
N,
%产生复加性高斯白噪声
n
(1)=gngauss(sgma);
n
(2)=gngauss(sgma);
%接收信号,即信道输出的加噪信号
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);
3、仿真结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 检测 matlab 仿真 报告