单载波频域均衡matlab仿真,包括卷积编码维特比译码,矩阵交织,QPSK调制解调,导频插入,MMSE-FDE频域均衡

news2024/11/23 3:13:12

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

        频域均衡是从校正系统的频率特性出发,利用一个可调滤波器的频率的频率特性去补偿信道或系统的频率特性,使包括可调滤波器在内的基带系统的总特性接近无失真传输条件。频域均衡是在频域上进行的,频域均衡的基本思路是利用了幅度均衡器和相位均衡器来补偿传输系统幅频特性和相频特性的不理想,以达到所要求的理想形成波形,从而消除码间干扰。

频域均衡实现结构如下: 

(1)首先产生随机的二进制序列,把二进制数字序列中每两个比特分成一组映射为QPSK,QPSK在不加任何噪声和信道下完成接收端的时域判决,获得接受信号,完成系统的初步构建。

(2)在该系统中,加入加性高斯白噪声,分析系统的误码率性能,并与理论误码率性能相比较,进一步完善系统的构建。

(3)在该系统的基础上加入多径瑞利衰落信道,分析高斯白噪声信道及衰落信道中误码率性能。

(4)接着在数据发送端加入循环前缀(独特字UW),数据帧和UW进行数据重组,以保证离散时间信号在时域的圆周卷积等于频域的乘积以及用作信道的估计。

(5)在相同条件下,用ZF均衡和LMMSE均衡算法对SC-FDE系统的仿真与误码性能分析。

(6)在相同条件下,用线性LS及MMSE信道估计技术对SC-FDE系统的仿真与误码性能分析

SC-FDE流程图

       信道估计的线性最小均方误差LMMSE均方误差低于最小二乘法LS,信道估计精度更高,但是缺点是实现复杂。
       频域均衡的最小均方误差准则MMSE的误码率要低于迫零均衡ZF。这是由于迫零均衡ZF接收端在对有用信号的均衡的同时也会对噪声信号进行放大,大大降低了整个通信系统的可靠性,而对于最小均方误差准则MMSE,它充分考虑了噪声对信号的影响,从多方面考虑了对有用信号的均衡。尤其在信噪比低的情况下,最小均方误差准则MMSE的优势尤为明显,误码率远低于迫零均衡ZF。
       实现了要求对单载波频域均衡系统中映射/解映射、DFT/IDFT 变换、信道估计和信道均衡等基带数字信号处理技术进行深入研究并对收发各个模块进行设计,从整个SC-FDE系统上分析基带性能。
        本发明实施例提供一种单载波MMSE频域均衡方法,接收机及发射机,其中方法包括:接收数据帧,所述数据帧包括复包络相反的第一导频数据和第二导频数据;基于所述第一导频数据和所述第二导频数据之和,确定平均噪声功率;基于所述第一导频数据和所述第二导频数据之差,确定信道频域特性参数;基于所述平均噪声功率和所述信道频域特性参数,进行单载波MMSE频域均衡处理.

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB核心程序

%数据输入 -> 卷积编码 -> 矩阵交织 -> QPSK调制 -> 插入导频 -> 插入CP -> 
%channel -> AWGN channel -> 去除CP -> FDE -> QPSK解调 -> 矩阵去交织 -> Viterbi译码
 
 
    idx  = idx+1;
    %SC-FDE        
    for ii = 1:1:FrameNum
        [SNR,ii]
        %生成发射信号、卷积码、矩阵交织器和QPSK调制器
        BitsTranstmp  = round(rand(1,FrameSize));
        conv_out      = convenc( BitsTranstmp,trel );
        interleav_out = interleaving( conv_out,interleave_table );
        QPSK_out      = psk( interleav_out,2 );
 
        %insetting pilot -> insetting CP
        Signal_Tx     = [UW_Ge,QPSK_out,UW_Ge]; 
 
        %通过信道
        Signal_Rx     = awgn( Signal_Tx,SNR,'measured');
 
        %Deleting CP -> MMSE_FDE    
 
        FDE_in        = Signal_Rx(1,1:(size(Signal_Rx,2)-UW_Num));
        FDE_out       = MMSE_FDE(FDE_in,UW_Ge);
 
        %Viterbi
        deqpsk_out      = de_qpsk( FDE_out );
        deinterleav_out = de_interleaving( deqpsk_out,interleave_table );
        viterbi_out     = vitdec( deinterleav_out,trel,tblen,'cont','hard' );  
 
        %BER                   
        decoded         = viterbi_out(tblen+1:end);
        msg             = BitsTranstmp(1:end-tblen);
        [n,r] = biterr( decoded,msg );
        BER_arry(idx,ii) = r;
    end
 A76

4.完整MATLAB

matlab源码说明_我爱C编程的博客-CSDN博客

V

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

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

相关文章

【Spring项目中的Controller理解】

目录 1. 添加依赖 2. 关于异常 1. 添加依赖 首先,需要保障此项目中存在spring-boot-starter-web依赖项,否则,当前项目并不具备Web应用程序开发所需的依赖! 提示:spring-boot-starter-web是建立在spring-boot-starte…

基于Python的Django开发接口框架搭建

1、安装Django,如图1 命令行执行:pip install django 2、创建Django项目,如图2 django-admin startproject imooc 3、创建Django的应用项目,如图3 必须进入项目文件下执行命令: python3 manage.py startapp app …

✿✿✿JavaScript ---- 函数/js内置对象

目 录 一、函数 自调用函数如下演示: 二、JS中的内置对象 2.Number对象 3.Date 对象 补:第三方的日期工具类 moment.js 4.Math对象 5.数组对象 补:ES6中数组对象新增的方法 6.Global全局方法对象 7.RegExp(**)正则表达式对象 一、…

Word2010入门

Word简介 Microsoft Office Word 2010是微软公司的一个文字处理应用程序。 我们可以利用Word编辑文字、图文排版、建立表格、图形绘制。一直以来,Word都是最流行的文字处理应用程序。 .doc、.docx是Word软件默认存储文件类型, .docx正在逐步取代.doc。…

QT和网络调试助手之间的UDP通信

文章目录一、背景二、实现过程简述UDP协议工作原理及编程模型UDP 接收端UDP 发送端运行UDP接收端和发送端运行UDP发送端发送数据给网络调试助手一、背景 之前一篇博客实现了两个网络调试助手之间的UDP通信。 文章链接:在MacOS上实现两个网络调试助手的UDP通信测试…

西电数据库实验-学生学籍管理系统 数据库设计

西电数据库实验-学生学籍管理系统 数据库设计 文章目录西电数据库实验-学生学籍管理系统 数据库设计需求分析实体集联系集概念结构设计逻辑结构设计实体集department(id‾,name)department(\underline {id},name)department(id​,name)instructor(id‾,name,dept_id)instructor…

如何翻译英文音频?看完你就学会了

在平时的工作中,相信大家应该都会遇到一些不太熟悉的英文或者其它外文的语言,这给我们的生活带来了诸多烦恼,那遇到这种情况,我们应该怎么办呢?其实很简单,我们可以利用一些软件来将这些语言转换成中文&…

SpringCloud系列(三)Nacos 注册中心的搭建及服务发现

在 SpringCloud 系列(一)里面介绍了 Eureka 注册中心主要用来做什么,如何搭建并进行了简单的测试,但是 Eureka 有诸多不便之处,如需要配合 SpringCloud config 来实现,我们还需要再写一个 Module 进行启动等…

Python安装库教程(解决安装报错)

Python库安装以及报错解决方法 本文章以jieba库和wordcloud库的安装来演示安装以及安装过程报错的解决方法 一. 使用Pycharm安装 1. 没有创建项目(创建了直接去往第二步) 选择下一步 创建完成 2. 已经创建项目 3. 安装python库报错 如果显示这个就表示…

融云全球社交泛娱乐洞察,老资格的「游戏社交」还有哪些想象空间

一切应用都将社交化。关注【融云全球互联网通信云】回复【融云】抽取高颜值大容量高端可乐保温杯哦~ 融入社交能力,创造增长奇迹。激活用户在不同场景的社交需求,让各类应用焕发出了新的生命力,也让“社交X”成为出海最大的浪。 《2022 社交…

VMware ESXi 8.0 SLIC Unlocker, 集成网卡驱动和 NVMe 驱动

发布 ESXi 8.0 集成驱动版,在个人电脑上运行企业级工作负载 请访问原文链接:VMware ESXi 8.0 SLIC & Unlocker, 集成网卡驱动和 NVMe 驱动,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org 发布 …

MYSQL练习题:报告系统状态的连续日期

题目:报告系统状态的连续日期 系统 每天 运行一个任务。每个任务都独立于先前的任务。任务的状态可以是失败或是成功。 编写一个 SQL 查询 2019-01-01 到 2019-12-31 期间任务连续同状态 period_state 的起止日期(start_date 和 end_date)。…

Spark系列之Spark的数据倾斜

title: Spark系列 第九章 Spark的数据倾斜 9.1 Spark调优概述 ​ 有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时 Spark 作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题…

安装TensorRT

安装TensorRT 安装可以查看官方文档:Installation Guide :: NVIDIA Deep Learning TensorRT DocumentationThis NVIDIA TensorRT 8.5.1 Installation Guide provides the installation requirements, a list of what is included in the TensorRT package, and ste…

性能测试 之进程上下文切换问题分析

安装监控平台 通过 grafana(前端) prometheus(时序数据库) node_exporter(硬件资源收集器) 安装监控系统 node_exporter 安装在被压测的服务器上,因为我本机已经安装过,所以只需要通过find 命令找到node所在位置,执行 ./node_exporter 启…

VUE 常用炫酷动画库(拿来即用系列)

目录 打字机效果Vue动画库 代码示例 效果 炫酷背景动画库 代码示例 效果 打字机效果Vue动画库 npm install vue-typical 代码示例 <template><div><v-typicalclass"blink":steps"[Hello, 1000, Hello World !, 600, Hello World ! &#…

【SpringCloud】08 分布式事务 seata

文章目录seata一、seata服务端的搭建&#xff08;1&#xff09;下载seata服务端&#xff08;2&#xff09;解压&#xff08;3&#xff09;配置seata的存储方式&#xff08;4&#xff09;创建seata数据库并导入相关表&#xff08;5&#xff09;把mysql的驱动jar放入到seata服务的…

如何使用ebpf kprobe探测内核函数

前言 在这之前, 我也曾使用过ebpf来改造我自己的项目, 最后也成功引入了项目, 有兴趣的同学可以查看此文章. 如何用ebpf开启tun网卡的TUNSETSTEERINGEBPF功能_我不买vip的博客-CSDN博客 但是该文章里并没有实质性的内容, 比如ebpf的map未曾涉及, 探测类型也未曾涉及, 只是一个空…

汽车蓄电池低压报警设计

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 选题背景及意义 1 1.2 国内外发展状况 2 1.2.1国内发展现状 2 1.2.2 国外蓄电池监测系统研究现状 2 1.3 研究主要内容 4 第2章 系统总体设计与算法确定 5 2.1 监测系统总体设计原理 5 2.2 主控芯片的选择 6 2.2.1 89C51单片机的概…

JAVA 中的代码生成包 CGLIB (Code Generation Library)

JAVA 中的代码生成包 CGLIB &#xff08;Code Generation Library&#xff09; CGLIB 是一个功能强大&#xff0c;高性能的代码生成包。它为没有实现接口的类提供代理&#xff0c;为 JDK 的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理&#xff0c;但当要代…