📄 ss_pe94.m
字号:
function[p]=ss_Pe94(snr_in_dB,Lc,A,w0)
%[p]=ss_Pe94(snr_in_dB,Lc,A,w0)
%SS_PE92得到给定snr_in_dB,Lc,A和w0运算得出的误码率
snr=10^(snr_in_dB/10);
sgma=1; %噪声的标准方差设置为固定值
Eb=2*sgma^2*snr; %达到设定信噪比所需的信号幅度
E_chip=Eb/Lc;%每码片的能量
N=10000;%传送的比特数目
%为减少该程序的运算时间,数据的产生,噪声,干扰,误码和差错计算都一起执行
%这样做有助于超长运算矢量的计算
num_of_err=0;
for i=1:N,
%产生下一数据比特
temp=rand;
if(temp<0.5),
data=-1;
else
data=1;
end;
%将其重复Lc次
for j=1:Lc,
repeated_data(j)=data;
end;
%后面产生比特传输使用的PN序列
for j=1:Lc,
temp=rand;
if(temp<0.5),
pn_seq(j)=-1;
else
pn_seq(j)=1;
end;
end;
%发送信号为
trans_sig=sqrt(E_chip)*repeated_data.*pn_seq;
%方差为sgma^2的高斯白噪声
noise=sgma*randn(1,Lc);
%干扰
n=(i-1)*Lc+1:i*Lc;
interference=A*sin(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;
%I如果存在传输中的错误,计数器累加操作
if (decision~=data),
num_of_err=num_of_err+1;
end;
end;
%计算的误码率为
p=num_of_err/N;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -