⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 7-21.m

📁 matlab数字信号与应用源代码7
💻 M
字号:
%例程7-21  分析直扩信号对正弦干扰的抑制
%直扩信号对正弦干扰的抑制

Lc=10;                       %每比特码片数目
A1=2;                        %第一个正弦干扰信号的幅度
A2=6;                        %第二个正弦干扰信号的幅度
A3=10;                       %第三个正弦干扰信号的幅度
A4=0;                        %第四个无干扰
w0=1;                        %以弧度表示的正弦干扰信号频率
SNRindB=0:2:30;
for i=1:length(SNRindB)        %计算误码率
    err_prb1(i)=ss_Pe(SNRindB(i),Lc,A1,w0);
    err_prb2(i)=ss_Pe(SNRindB(i),Lc,A2,w0);
    err_prb3(i)=ss_Pe(SNRindB(i),Lc,A3,w0);
end
SNRindB4=0:1:8;
for i=1:length(SNRindB4)       %计算无干扰情况下误码率
    err_prb4(i)=ss_Pe(SNRindB4(i),Lc,A4,w0);
end
figure(1);                    %绘图输出
semilogy(SNRindB,err_prb1,'-bo',SNRindB,err_prb2,'-gx',SNRindB,err_prb3,'-r+',SNRindB4,err_prb4,'-k*');
grid on
title('扩频系统不同幅度正弦干扰下误码率曲线');
xlabel('SNRindB');
ylabel('BERindB');
legend('幅值为2的正弦干扰','幅值为6的正弦干扰','幅值为10的正弦干扰','无正弦干扰');

其中误码率计算函数如下:
function [p]=ss_Pe(snr_in_dB,Lc,A,w0)
snr=10^(snr_in_dB/10);
sgma=1;                    %噪声的标准方差设为固定值
Eb=2*sgma^2*snr;            %达到设定信噪比所需的信号幅度
E_chip=Eb/Lc;               %每码片能量
N=20000;                   %传送的比特数

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_chip)*repeated_data.*pn_seq;     %发送信号
    noise=sgma*randn(1,Lc);                       %方差为sgma^2的高斯白噪声
    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                         %进行判决
        dicision=-1;
    else
        dicision=1;
    end
    if dicision~=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 + -