m扩频通信系统在瑞利信道中的误码率性能matlab仿真

news2024/11/24 23:08:28

目录

1.算法描述

2.matlab算法仿真效果

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

   本课题,我们主要涉及到两个理论要点,第一个是瑞利衰落条件,第二个是扩频通信。下面分别对这两个理论进行介绍:

       第一个是瑞利衰落条件:

       第二个是扩频通信:

我们从main.m这个主函数的各个模块进行说明:

        整个系统按照如下的流程仿真。

模块一:产生m序列;

这个部分是产生扩频需要的伪随机序列,对应的matlab函数为:func_Mseq.m

       然后如何产生m序列的,请单独再去看这个函数中的中文注释。

步骤二:产生随机信号,进行调制:

这里调制函数对应的程序为:func_Mod.m

这里,我们使用的是QPSK调制过程,具体见这个函数的代码注释;

 步骤三:对调制后的信息进行扩频

这里扩频对应的程序为: func_spread.m,具体见这个函数的代码注释;

步骤四:对扩频后的信号进行滤波

滤波的步骤分为采样和滤波,具体见上述两个函数的代码注释。

func_samples.m

func_filter2.m

步骤五:瑞利信道的设计

瑞利信道函数func_fade.m

 步骤六:降采样,滤波

这里也是使用一个滤波函数,原理和上面的滤波函数相同。

 步骤七:解扩

对应的函数为:func_despread.m具体过程见代码注释

步骤八:解调

对应的函数为:func_Demod.m具体过程见代码注释

2.matlab算法仿真效果

matlab2022a仿真结果如下:

 

3.MATLAB核心程序

%**************************************************************************
%信道选择
Is_Rayleigh  = 1;
 
%符号率
Sym_Rate     = 0.5e6;   
%调制
Mod_order    = 2;       
%比特率 
Bit_Rate     = Sym_Rate*Mod_order;    
%符号数
Sim_Num      = 100;               
SNR          = [-2:1:8];     
%滤波阶数
Filter_Order = 15;   
Samples      = 4;          
%滚降
Alpha        = 0.5;            
Filter1      = func_filter(Filter_Order,Samples,Sym_Rate,Alpha,1);                         
Filter0      = func_filter(Filter_Order,Samples,Sym_Rate,Alpha,0);                        
%扩频码初值
UE_num         = 1;               
morder         = 3;                
register1_coff = [1,3];            
register2_coff = [2,3];            
register1      = [1,1,1];          
register2      = [1,1,1];          
%扩频码
Ind = 0;
for snrs=SNR
    snrs
    Ind = Ind + 1;  
    %m序列
    Mcode = func_Mseq(morder,register1_coff,register1,UE_num); 
    %bpsk
    Mcode = 2*Mcode - 1; 
    MLen  = length(Mcode); 
    %信道衰减初值设定
    rayleigh_parameter; 
    
    MTKL   = 100;                           
    Nerr   = 0; 
    Nall   = 0; 
    for j=1:MTKL 
        %发射
        Tr           = (randn(UE_num,Sim_Num*Mod_order) >= 0); 
        %调制
        [Im,Qm]      = func_Mod(Tr,UE_num,Sim_Num,Mod_order);  
        %扩频
        [Ims,Qms]    = func_spread(Im,Qm,Mcode);  
        %采样
        [Imss,Qmss]  = func_samples(Ims,Qms,Samples);  
        %滤波
        [Imssf,Qmssf]= func_filter2(Imss,Qmss,Filter1);          
        if UE_num == 1                                                    
           Imv = Imssf;      Qmv = Qmssf; 
        else 
           Imv = sum(Imssf); Qmv = sum(Qmssf); 
        end 
        %高斯信道和瑞利信道
        if Is_Rayleigh == 0 
            ImTr = Imv; 
            QmTr = Qmv; 
        else 
            [ImTr,QmTr] = func_fade(Imv,Qmv,Delays,fading,Theta,No,Counts,Nums,length(Imv),Time_fbl,fd,flat); 
            Counts      = Counts + itndel; 
        end 
        %接收机
        SFading     = sum(rot90(Imssf.^2 + Qmssf.^2))/Sim_Num;     
        At          = sqrt(0.5 * SFading * Sym_Rate / Bit_Rate * 10^(-snrs/10)); 
        Imr         = ImTr + randn(size(ImTr)) .* At; 
        Qmr         = QmTr + randn(size(QmTr)) .* At; 
        [Imrf,Qmrf] = func_filter2(Imr,Qmr,Filter0);       
        sampl       = Filter_Order * Samples + 1; 
        Imrfs       = Imrf(:,sampl:Samples:Samples*Sim_Num*MLen+sampl-1); 
        Qmrfs       = Qmrf(:,sampl:Samples:Samples*Sim_Num*MLen+sampl-1); 
        %解扩
        [II,QQ]     = func_despread(Imrfs,Qmrfs,Mcode);             
        %QPSK解调
        demodata    = func_Demod(II,QQ,UE_num,Sim_Num,Mod_order);        
        %误码率分析
        noe2        = sum(sum(abs(Tr-demodata))); 
        nod2        = UE_num * Sim_Num * Mod_order; 
        Nerr        = Nerr + noe2; 
        Nall        = Nall + nod2; 
    end 
    ber       = Nerr / Nall; 
    ERRS(Ind) = ber;
end
if Is_Rayleigh == 0
   save Is_Rayleigh0.mat SNR ERRS
else
   save Is_Rayleigh1.mat SNR ERRS 
end
 
1_092_m

4.完整MATLAB

V

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我们又重写了一个关键服务

#01 QueryCoord 组件介绍 QueryCoord 是 Milvus 中查询集群的中心调度节点,在用户将一个 Collection Load 到内存中时,QueryCoord 负责将该 Collection 的 Segment 调度到 QueryNode 集群中,以支持后续的查询。 QueryCoord 最核心的操作有4…

将egg项目部署至服务器

文章目录1.下载linux版本的node-v162.将node安装包从自己电脑上上传到自己的服务器3.在服务器中解压压缩包4.配置环境变量5.使文件生效6.将egg项目传到服务器指定目录下7.下载依赖8.npm start 运行不会占用终端 并且一直在运行 可以使用npm stop停用9.最后使用云服务器ip:端口号…

Linux22 --- 网络为什么要分层、使用tcp协议实现两个进程间通信的功能、IP地址转换函数

一、网络为什么要分层 1 1、分层的优点 1)各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个…

Linux-Hadoop集群配置

文章目录一、配置Hadoop集群1、在master虚拟机上配置hadoop(1)编辑Hadoop环境配置文件 - hadoop-env.sh(2)编辑Hadoop核心配置文件 - core-site.xml(3)编辑HDFS配置文件 - hdfs-site.xml(4&…

1542_AURIX_TC275_CPU子系统_内核

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 我因为看了这个章节的开篇有些疑惑去看了内核手册,现在学习的进程终于又重新回归,回到了TC275这个MCU的学习上。 这里的几条笔记记录是隔了很久写的,前面…

【Java面试】HashMap死循环问题

问题 最近几道面试题被问了是否了解并发情况下JDK7中HashMap发生死循环,导致CPU占用100%的问题。 由于HashMap并非是线程安全的,所以在高并发的情况下必然会出现问题,这是一个普遍的问题。 如果是在单线程下使用HashMap,自然是没…

[MAUI] 开篇-初识MAUI

前言 在2020年5月, 微软宣布了MAUI跨平台框架, MAUI 是Xamarin.Forms演变而来, 这也就意味着, 如果你原来具备Xamarin.Forms开发经验, 你可以流畅的过渡到MAUI开发当中。 原本于2021年底发布的MAUI正式版被推迟到了2022年5月底发布。现在, 你目前可以通过安装VS2022 预览版进行…

Elasticsearch倒排索引

什么是正排索引? 如下图,有一张商品表(tb_goods): 对于mysql数据库来说,肯定会给“id”创建主键索引,然后根据“id”来查询对应的商品信息,而这种情况就被称为“正排索引” 现在有…

eMagin:当月产百万片时,4K MicroOLED成本将不是问题

在今年2022 SID显示周期间,Micro OLED微显示模组厂商eMagin曾展示一款专为超短焦VR头显开发的4K Micro OLED微显示屏,有趣的是,该显示屏连接的主板上印有STEAMBOAT字样,让人不禁怀疑它与Valve之间是否存在某种联系。甚至有猜测认为…

【Linux】8.0 多线程

文章目录1.0 Linux线程概念1.1 Linux线程基本概念1.2 Linux线程优劣介绍2.0 Linux线程控制2.1 pthread_create(创建线程)2.2 pthread_join(线程等待)2.3 pthread_exit(线程终止)2.4 pthread_detach(线程分离)3.0 线程id和LWP的关系4.0 Linux线程互斥4.1 线程互斥相关概念4.2 线…

JUC系列(五) 读写锁与阻塞队列

📣 📣 📣 📢📢📢 ☀️☀️你好啊!小伙伴,我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 📒 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️,擅…

Qt第二十六章:Nuitka打包教程

Nuitka环境安装 ①下载gcc文件。提取码:8888百度网盘 请输入提取码 ②解压nuitka1.0.6版本,我们解压64位的。 ③设置环境变量 ④检测一下 gcc.exe --version 安装nuitka pip install nuitka pip install ordered-set 防止环境变量不生效,…

【Redis】Redis介绍

文章目录1.NoSQL数据库1.1NoSQL适用场景1.2常用的NoSQL1.3Redis介绍1.4Redis的使用场景1.5Redis默认按照目录1.6Redis的启动1.7Redis是单线程多路IO复用技术1.NoSQL数据库 NoSQL(NoSQL Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoS…

学生HTML个人网页作业作品 (服装商城HTML+CSS)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

RK3588平台开发系列讲解(Pinctrl篇)Pinctrl设备树介绍

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、 DTS介绍二、新建pinctrl三、引用pinctrl沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍pinctrl设备树的使用方法。 一、 DTS介绍 RK芯片的设备树⼀般把pinctrl节点放在soc…

元宇宙数字藏品,打造数字经济产业,实现全新业态升级

《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》提出以数字化转型整体驱动生产方式、生活方式和治理方式变革,催生新产业新业态新模式,壮大经济发展新引擎,将“虚拟现实和增强现实”列入了数字经济重点产业。 而自…

GAN生成漫画脸

最近对对抗生成网络GAN比较感兴趣,相关知识点文章还在编辑中,以下这个是一个练手的小项目~ (在原模型上做了,为了减少计算量让其好训练一些。) 一、导入工具包 import tensorflow as tf from tensorflow.keras import layersimport numpy a…

tinymce富文本编辑器做评论区

今天分享一下tinymce富文本编辑器做评论区的全过程。 文章目录一、介绍1.最终效果2.功能介绍3.主要项目包版本介绍:二、每个功能的实现1.自定义toolbar的功能区①对应的样式以及意义②对应的代码实现【忽略了一切非实现该功能的代码】2.展示、收起评论区①对应的样式…

ctf工具之:mitmproxy实践测试

1、安装居然使用的pip pip install mitmproxy 导入证书,密码为空 2、启用mitmweb pause 直接可以查看方式 搜索里输入login 对于http协议 直接看到了密码原文 3、后台日志方式 录入和回放 mitmdump -w baidu.txt pause 录制结束 mitmdump -nC baidu.txt paus…

如何设计可扩展架构

架构设计复杂度模型 业务复杂度和质量复杂度是正交的 业务复杂度 业务固有的复杂度,主要体现为难以理解、难以扩展,例如服务数量多、业务流程长、业务之间关系复杂 质量复杂度 高性能、高可用、成本、安全等质量属性的要求 架构复杂度应对之道 复杂…