• 构建直接序列扩频系统模型(Matlab代码实现)


      🍒🍒🍒欢迎关注🌈🌈🌈

    📝个人主页:我爱Matlab


    👍点赞➕评论➕收藏 == 养成习惯(一键三连)🌻🌻🌻

    🍌希望大家多多支持🍓~一起加油 🤗

    💬语录:将来的我一定会感谢现在奋斗的自己!

    🍁🥬🕒摘要🕒🥬🍁

    本文构建直接序列扩频系统模型,使用Matlab对BPSK直接序列扩频通信系统在AWGN信道下性能进行基带建模和仿真,并进行分析。

    ✨🔎⚡运行结果⚡🔎✨

    1. 编程产生周期长度为31的m序列;
    2. 产生随机发送信息,并分别进行BPSK调制;
    3. 采用m序列作为扩频码,产生扩频信号发送信号;
    4. 对扩频发送信号加入白噪声,得到接收扩频信号;
    5. 对接收信号进行解扩;
    6. 对接收信号进行BPSK解调;
    7. 通过蒙特卡洛方法,仿真系统误码率,画出误码率曲线。
    8. 产生周期长度为31的m序列,记为w; (实验6的内容,m序列周期T=2n-1)(需转换成1、-1)
    9. 产生发送信息0、1比特; (三种方法:循环判断、rand+round、randint/randi)(数据长度L自定,尽量大一些,比如1000)
    10. 对信息比特进行BPSK调制,记为d; (即码型变换:1→1, 0→-1)(注:出于简化,本实验省略载波调制部分)
    11. 对发送信息进行扩频,即d*w; (实现提示1:采用循环的方式,对每位数据进行扩频,运行速度较慢) (实现提示2:可将d的每位数据重复31次,w扩大L次(L为发送数据长度),再点乘。可用函数:repmat函数、reshape函数)
    12. 信号经过信道,叠加白噪声,得到接收端接收信号 ; (噪声功率由信噪比决定,仿真结果横坐标为信噪比,可取-30:5,单位dB) (可使用awgn函数,也可自行实现)
    13. 对接收端信号进行恢复,包括解扩、解调、判决。方法如下:a. 首先与扩频码相乘进行解扩, ;b. 对每位数据扩大的31次进行求和,以第一个数据b1为例,sum(b1);c. 判决,sum(b1)>0,判为1,否则为-1。
    14. 误码率统计,并画图。 (画图函数:semilogy)

    💂♨️👨‍🎓Matlab代码👨‍🎓♨️💂

    clc;clear all;
    r=5;
    N=2^r-1;%周期31
    a=ones(1,r);   
    m=zeros(1,N);  
    for i=1:(2^r-1) 
        temp= mod((a(5)+a(2)),2); 
        for j=r:-1:2
            a(j)=a(j-1);
        end 
        a(1)=temp;
        m(i)=a(r); 
    end
    m=m*2-1;%双极性码
    %产生随机发送信息,并进行BPSK/QPSK调制
    n=1000;
    Y_BIT_sum=zeros(1,36);
    for jj=1:100%跑100次,得到平滑曲线
        source=randi([0 1],1,n);
        % s_imag=randi(1,n);
        s_BPSK=2*source-1;
        % s=source+j*s_imag;
        % j=sqrt(-1);
        % s_QPSK=s*2-(1+j);
        %产生扩频信号:
        % for z=1:1:100
        %     y_QPSK(31*(z-1)+(1:31))=m*s_QPSK(z);
        % end
        for z=1:1000
            y_BPSK(31*(z-1)+(1:31))=m*s_BPSK(z);
        end
        %加入高斯白噪声
        SNR=-30:5;
        for i=1:length(SNR)
            y(i,:)=awgn(y_BPSK,SNR(i));
        end
        %解扩
        for z=1:1000
            for i=1:length(SNR)
                o_BPSK(i,z)=y(i,31*(z-1)+(1:31))/m;
            end
        end
        Y_RE=o_BPSK;
        %判决
        Y_RE(o_BPSK>0)=1;
        Y_RE(o_BPSK<0)=0;
        Y_ERRO=zeros(length(SNR),1000);
        Y_BIT=zeros(1,length(SNR));
        for i=1:length(SNR)
            Y_ERRO(i,:)=abs(Y_RE(i,:)-source);
            Y_BIT(i)=sum(Y_ERRO(i,:))/n;
        end
        Y_BIT_sum=Y_BIT_sum+Y_BIT;
    end
    Y_BIT_av=Y_BIT_sum/100;
    semilogy(SNR,Y_BIT_av);
    xlabel('SNR');ylabel('误码率');
    grid on;
    title('wml');

    📜📢🌈参考文献🌈📢📜

    [1]曹旺斌,康辉,谢志远,梁晓林,胡正伟.MIMO-PLC直接序列扩频系统编码方法研究[J].中国电机工程学报,2021,41(S1):121-129.DOI:10.13334/j.0258-8013.pcsee.211063.

  • 相关阅读:
    如何启用 Podman 的自动容器更新
    MCE | HIV 衣壳蛋白有望成为 HIV 治疗新靶标
    C指针之初始化(三)
    m基于自适应遗传优化的IEEE-6建设费用和网络损耗费用最小化电网规划算法matlab仿真
    nlp工具库spacy
    推荐给中小企业的CRM系统软件
    OC-NSString
    力扣:151. 反转字符串中的单词(Python3)
    每日五题-202202
    MIKE水动力笔记19_统计平均潮差
  • 原文地址:https://blog.csdn.net/weixin_66436111/article/details/128086068