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

2023-10-25 06:59

本文主要是介绍构建直接序列扩频系统模型(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.

这篇关于构建直接序列扩频系统模型(Matlab代码实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280825

相关文章

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

golang版本升级如何实现

《golang版本升级如何实现》:本文主要介绍golang版本升级如何实现问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录golanwww.chinasem.cng版本升级linux上golang版本升级删除golang旧版本安装golang最新版本总结gola

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具