ee0b2ed9dd2e45a5980204cael fb6d54 doc 信号 本次数字基带传输信道编码仿真,输入信道信号采用BSK信号,二进制信源 序列的1,0符号分别被映射为两个持续时间t∈[0,相位差为x的正弦波,即 5()=2E, [0,7 S0(1) 信号性能指标: E:信号功率 T:确知信号周期 相关系数p=-1; 归一化信噪比: (N。为输入信道的噪声功率谱密度) N 仿真时,我们视抽样判决时刻判决器输入(即相关器或匹配滤波器输出)为 r:判决器输入序列 士E:信号序列 n:高斯白噪声序列 二进制双极性通信系统的蒙特卡罗仿真 蒙特卡罗计算机仿真用于估算数字通信系统的误码率,特别适用于难于对判决 器的性能进行分析的情况。利用蒙特卡罗仿真估算二进制双极性通信系统的误码率 具体方法可以用下图表示 二进制双极性通信系统的蒙特卡罗仿真模型 均匀随机数 高斯随机数 发生器 发生器 ±E 二进制数据源 判输出数据 决 器 信道编码的仿真 97601班陈鹏 第6页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 6 页 共 59 页 信号 本次数字基带传输信道编码仿真,输入信道信号采用 BPSK 信号,二进制信源 序列的 1,0 符号分别被映射为两个持续时间 t [0,T] 相位差为 的正弦波,即 ~ ( ) ~ ( ) s t E T e s t E T e j f t j f t 1 2 0 2 2 2 0 0 = = − t [0,T] 信号性能指标: E:信号功率; T:确知信号周期; 相关系数 = −1 ; 归一化信噪比: D E N 2 0 = (N0 为输入信道的噪声功率谱密度) 。 仿真时,我们视抽样判决时刻判决器输入(即相关器或匹配滤波器输出)为 r = ±E + n r : 判决器输入序列 ±E : 信号序列 n : 高斯白噪声序列 二进制双极性通信系统的蒙特卡罗仿真 蒙特卡罗计算机仿真用于估算数字通信系统的误码率,特别适用于难于对判决 器的性能进行分析的情况。利用蒙特卡罗仿真估算二进制双极性通信系统的误码率 具体方法可以用下图表示: 二进制双极性通信系统的蒙特卡罗仿真模型 n ±E r 输出数据 D D’ 均匀随机数 发生器 二进制数据源 高斯随机数 发生器 判 决 器
ee0b2ed9dd2e45a5980204cael fb6d54 doc 比较 差错计数器 如图,首先仿真产生判决器的输入随机变量。使用均匀分布随机数发生器产生 来自于二进制数据源的二进制01信息序列,该01序列被映射为±E的序列,E代 表信号能量,且可归一化为1。使用高斯噪声发生器产生均值为0,方差为的高斯 随机数序列n。判决器将随机变量和判决电平0相比较。如果大于0,判决发送比 特是0,否则判决发送比特是1。该判决输出与所发送的信息比特序列相比较,并 计算误比特数和误码率 进行编码仿真时,该模型应在D和D处加上相应的编码器和译码器。 下面绘制了蒙特卡罗计算机仿真的基本流程图 蒙特卡罗计算机仿真的基本流程图 开始 外部输入:信噪比(dB) 初始化变量:信噪比、发送接收信号变量、噪声变量 仿真序列长度、循环步长、临时变量、 清零 循环计数器和差错计数器 循环计数器置1 生成发送比特模块 生成叠加噪声信号模块 接收判决模块 生成接受比特 信道编码的仿真 97601班陈鹏 第7页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 7 页 共 59 页 如图,首先仿真产生判决器的输入随机变量。使用均匀分布随机数发生器产生 来自于二进制数据源的二进制 01 信息序列,该 01 序列被映射为±E 的序列,E 代 表信号能量,且可归一化为 1。使用高斯噪声发生器产生均值为 0,方差为的高斯 随机数序列 n。判决器将随机变量和判决电平 0 相比较。如果大于 0,判决发送比 特是 0,否则判决发送比特是 1。该判决输出与所发送的信息比特序列相比较,并 计算误比特数和误码率。 进行编码仿真时,该模型应在 D 和 D’ 处加上相应的编码器和译码器。 下面绘制了蒙特卡罗计算机仿真的基本流程图。 蒙特卡罗计算机仿真的基本流程图 比 较 差 错 计 数 器 开始 外部输入:信噪比(dB) 初始化变量:信噪比、发送接收信号变量、噪声变量 仿真序列长度、循环步长、临时变量、 清零: 循环计数器和差错计数器 循环计数器置 1 生成发送比特模块 生成叠加噪声信号模块 接收判决模块 生成接受比特
ee0b2ed9dd2e45a5980204cael fb6d54 doc 差错计数模块 循环计数器加 循环计数器 次数口满? 显示差错计数器数值,计算误码率 结束 返回值:误码率 绘制蒙特卡罗仿真曲线的一般流程图 开始 初始化变量:仿真信噪比采样序列、仿真循环步长、 理论计算信噪比采样序列、理论计算循环步长 清零 仿真循环计数器i、仿真误码率数组 理论计算循环计数器j、理论误码率数组 仿真循环计数器i置 蒙特卡罗仿真模块: 计算第i个仿真信噪比下的对应仿真误码率数组元素值 循环计数器次数已满? Y 理论计算循环计数器j置1 信道编码的仿真 97601班陈鹏 第8页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 8 页 共 59 页 N Y 绘制蒙特卡罗仿真曲线的一般流程图 N Y 差错计数模块 循环计数器加 1 循环计数器 次数已满? 显示差错计数器数值,计算误码率 结束 返回值:误码率 开始 初始化变量:仿真信噪比采样序列、仿真循环步长、 理论计算信噪比采样序列、理论计算循环步长 清零: 仿真循环计数器 i、仿真误码率数组、 理论计算循环计数器 j、理论误码率数组 仿真循环计数器 i 置 1 循环计数器次数已满? 理论计算循环计数器 j 置 1 蒙特卡罗仿真模块: 计算第 i 个仿真信噪比下的对应仿真误码率数组元素值 i++
ee0b2ed9dd2e45a5980204cael fb6d54 doc 理论计算模块: 算第j个理论信噪比下的对应理论误码率数组元素值 理论计算循环计数器次数已满? Y 绘图模块: 设置绘图窗口参数 绘制仿真误码率曲线 理论误码率曲线 结束 MATLAB源程序 function [p]=smldPe55(snr in dB sm1dPe55.m二进制双极性通信系统的蒙特卡罗仿真 8 snr in dB信噪比 8p误码率 SNR=exp(snr in db*log(10)/10); Eb/NO sgma=E/sgrt(2*SNR) N=10^5;8仿真序列长度10~5,运行时间约1分钟 for i=1: N temp=rand if (temp<0. 5) dsource=o dsource=l if(dsource==0) e⊥se r=E+gngauss ( sgma 信道编码的仿真 97601班陈鹏 第9页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 9 页 共 59 页 N Y MATLAB 源程序 function [p]=smldPe55(snr_in_dB) %smldPe55.m 二进制双极性通信系统的蒙特卡罗仿真 %snr_in_dB 信噪比 %p 误码率 E=1; SNR=exp(snr_in_dB*log(10)/10);%Eb/N0 sgma=E/sqrt(2*SNR); N=10^5;%仿真序列长度10^5,运行时间约1分钟 temp=0; dsource=0; decis=0; numoferr=0; p=numoferr/N; for i=1:N temp=rand; if (temp<0.5) dsource=0; else dsource=1; end if(dsource==0) r=-E+gngauss(sgma); else r=E+gngauss(sgma); 理论计算循环计数器次数已满? 理论计算模块: 计算第 j 个理论信噪比下的对应理论误码率数组元素值 绘图模块: 设置绘图窗口参数 绘制仿真误码率曲线 理论误码率曲线 结 束 j++
ee0b2ed9dd2e45a5980204cael fb6d54 doc if(r<o) if (decis=dsource) numoferr=numoferr+1 end 8sm⊥dPe55.m二进制双极性通信系统的蒙特卡罗仿真 ce55.m仿真绘图语句 8仿真序列长度10~5,运行时间约15分钟 echo on SNRindB551=0: 16 SNRindB552=0:0.1:16 smld err prb55=zeros (1, length(SNRindB551))i theo err prb55=zeros(l, length(sNRindB552))i for i=l: length(SNRindB551 smld err prb55(i)= solde55( SNRindB551(i);8计算仿真误码率 for i=l: length(SNRindB552 SNR55=exp(SNRindB552(i)*log(10)/10) theo err prb55(i)=Funct (sqrt (2*SNR55))i 8 Funct y=(1/2)*erfc(x/sqrt(2));理论误码率公式 fiqure semilog(sNRindb55l, smld err prb55,r*-) axis([0,16,1e-5,1]); xlabel('Eb/No in dB)i ylabel('Pe')i title('二进制双极性通信系统的蒙特卡罗仿真结果与理论值比较') hold on semilog (SNRindB552, theo err prb55, 'b: ')i 8ce55.m仿真绘图语句 信道编码的仿真 97601班陈鹏 第10页共59页
ee0b2ed9dd2e45a5980204cae1fb6d54.doc 信道编码的仿真 97601 班 陈鹏 第 10 页 共 59 页 end if (r<0) decis=0; else decis=1; end if (decis~=dsource) numoferr=numoferr+1; end end numoferr, p=numoferr/N; % smldPe55.m 二进制双极性通信系统的蒙特卡罗仿真 %ce55.m 仿真绘图语句 %仿真序列长度 10^5,运行时间约 15 分钟 echo on SNRindB551=0:16; SNRindB552=0:0.1:16; smld_err_prb55=zeros(1,length(SNRindB551)); theo_err_prb55=zeros(1,length(SNRindB552)); for i=1:length(SNRindB551) smld_err_prb55(i)=smldPe55(SNRindB551(i)); %计算仿真误码率 end for i=1:length(SNRindB552) SNR55=exp(SNRindB552(i)*log(10)/10); theo_err_prb55(i)=Qfunct(sqrt(2*SNR55)); %Qfunct y=(1/2)*erfc(x/sqrt(2));理论误码率公式 end figure; semilogy(SNRindB551,smld_err_prb55,'r*-'); axis([0,16,1e-5,1]); xlabel('Eb/N0 in dB'); ylabel('Pe'); title('二进制双极性通信系统的蒙特卡罗仿真结果与理论值比较'); hold on semilogy (SNRindB552,theo_err_prb55,'b:'); %ce55.m 仿真绘图语句