www.gusucode.com > matlab通信工程仿真源码(张德丰等编著)程序书籍 > matlab_code/matlab通信工程仿真源码(张德丰等编著)/第8章/li8_15fun.m
function [p]=li8_15fun(snr_in_dB,Lc,A,w0) %运算得出的误码率 snr=10^(snr_in_dB/10); sgma=1; %噪声的标准方差设置为固定值 Eb=2*sgma^2*snr; %达到设定信噪比所需要的信号幅度 E_c=Eb/Lc; %每码片的能量 N=10000; %传送的比特数目 num_of_err=0 for i=1:N temp=rand; if(temp<0.5), data=-1; else data=1; end for j=1:Lc %将其重复Lc次 repeated_data(j)=data; end for j=1:Lc %产生比特传输使用的PN序列 temp=rand; if(temp<0.5) pn_seq(j)=-1; else pn_seq(j)=1; end end trans_sig=sqrt(E_c)*repeated_data.*pn_seq; %发送信号 noise=sgma*randn(1,Lc); %方差为sgma^2的高斯白噪声 n=(i-1)*Lc+1:i*Lc; %干扰 interference=A*cos(w0*n); rec_sig=trans_sig+noise+interference; %接收信号 temp=rec_sig.*pn_seq; decision_variable=sum(temp); if(decision_variable<0) %进行判决 decision=-1; else decision=1; end if(decision~=data) %如果存在传输中的错误,计数器累加操作 num_of_err=num_of_err+1; end; end; p=num_of_err/N;