m基于matlab的光通信的信道估计,均衡,抑制papr误码率仿真,对比ZF,RLS,MMSE三种算法

news2024/9/21 12:33:38

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

可见光通信的信道估计,均衡,抑制papr。

不考虑光信道,用传统的无线通信的OFDM的信道估计,均衡,抑制papr  信道估计,均衡最好有两个以上的方法比较

%本次仿真载频为2GHz,带宽1MHz,子载波数128个,cp为16
%子载波间隔为7.8125kHz
%一个ofdm符号长度为128us,cp长度为16us
%采用16QAM调制方式
%最大doppler频率为132Hz
%多径信道为5径,功率延迟谱服从负指数分布~exp(-t/trms),trms=(1/4)*cp时长,各径延迟取为delay=[0 2e-6 4e-6 8e-6 12e-6]

Zero forcing, ZF:简单,但放大了噪声,性能最差

Minimum Mean Square Error, MMSE:考虑了噪声因素,性能比ZF好

2.仿真效果预览

matlab2022a仿真如下:

3.MATLAB核心程序

clc;
clear all;
close all;
warning off;
addpath 'func\'
 
 
sel    = 3;
%FFT长度
FFTLen = 64;
%循环前缀长度
CPLen  = 16; 
%QAM
M      = 4; 
%子载波个数
Ns     = 8;  
w      = ones(FFTLen,1); 
SNRdB  = [0:2:26];
 
for ii = 1:length(SNRdB)
    ii
    SNRS = SNRdB(ii);
    NUM  = 0;
    ERR  = 0;
    while ERR <= 2000
          ERR
          NUM          = NUM + 1;
          store_input  = zeros(Ns,FFTLen*M); 
          store_output = zeros(Ns,FFTLen*M);
          store_error  = zeros(Ns,FFTLen);
 
          for sym=1:Ns
              %发送数据
              input              = rand(1,FFTLen*M) > 0.5;
              store_input(sym,:) = input;
              %发送
              [signal_tx,input_symbols] = func_transmitter(input,FFTLen,CPLen,M);
              %通过信道
              signal_rx                 = func_channel(signal_tx,SNRS);
              %估计,均衡,
              if sel == 1
                 [signal_recovered,w,error_sym] = func_receiver_mmse(signal_tx,signal_rx,input_symbols,FFTLen,CPLen,M,w);
              end
              if sel == 2
                 [signal_recovered,w,error_sym] = func_receiver_zf(signal_tx,signal_rx,input_symbols,FFTLen,CPLen,M,w);
              end   
              if sel == 3
                  w = zeros(3,1);
                 [signal_recovered,w,error_sym] = func_receiver_rls(signal_tx, signal_rx, FFTLen, CPLen, M, w, 3);
              end                
              
              store_output(sym,:)            = signal_recovered;
              store_error(sym,:)             = error_sym.';
          end
          errors_ext = abs(store_input - store_output);
          errors     = errors_ext(FFTLen+1:length(errors_ext));
          num_errors = sum(sum(errors));
          ERR        = ERR + num_errors;
    end
    BER(ii) = ERR/NUM/(FFTLen*M*(Ns-1));
end
% figure;
% semilogy(SNRdB,BER,'b-o');
% grid on;
% ylabel('Error');
% xlabel('SNR');
 
if sel == 1
   save rmmse.mat SNRdB BER
end
if sel == 2
   save rzf.mat SNRdB BER
end
if sel == 3
   save rls.mat SNRdB BER
end
 
figure;
load rmmse.mat
semilogy(SNRdB,BER,'b-o');
hold on
load rzf.mat
semilogy(SNRdB,BER,'r-o');
hold on
load rls.mat
semilogy(SNRdB,BER,'k-o');
hold on
legend('MMSE','ZF','RLS');
grid on;
ylabel('Error');
xlabel('SNR');
01_099m

4.完整MATLAB

V

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

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

相关文章

解决Windows RDP远程桌面连接同时多用户连接不互踢不干扰问题及rdp wrapper windows版本不受支持问题.

注意: 如果你当前正在通过RDP方式远程连接到你要更改设置的目标计算机,请在目标计算机上安装其他远程控制软件.防止RDP因在此过程中挂掉无法连接. 下载: 使用GitHub - stascorp/rdpwrap: RDP Wrapper Library开源软件 转到Release 最新版本的是1.6.2,原作者没有更新的了.好…

MySQL中count(*)和information_schema.tables中的table_rows值不相同

前两天我还在高高兴兴地写了一篇文章《一条SQL查询出MySQL数据库中所有表的数据量大小》&#xff0c;心想这也太方便了&#xff0c;只用一条SQL就能统计出所有表的数据量&#xff0c;但没想到&#xff0c;最终还是翻车了。。。 翻车过程如下&#xff1a; 有一张表&#xff0c…

【多目标进化优化】 MOEA 测试函数

声明 本文内容来源于 《多目标进化优化》 郑金华 邹娟著&#xff0c;非常感谢两位老师的知识分享&#xff0c;如有侵权&#xff0c;本人立即删除&#xff0c;同时在此表示&#xff0c;本文内容仅学习使用&#xff0c;禁止侵权&#xff0c;谢谢&#xff01; 注&#xff1a;本文…

HTML+CSS制作简单的家乡网页 ——我的家乡介绍广东 web前端期末大作业

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

基于STM32单片机的温度报警器(数码管)(Proteus仿真+程序)

编号&#xff1a;26 基于STM32单片机的温度报警器&#xff08;数码管) 功能描述&#xff1a; 本设计由STM32F103单片机最小系统DS18B20温度传感器数码管显示模块声光报警模块独立按键组成。 1、主控制器是STM32F103单片机 2、DS18B20温度传感器测量温度 3、数码管显示温度值&…

数字化改革“1612”详解

背景 2021年2月18日&#xff0c;浙江省开始数字化改革建设&#xff0c;通过一年的建设&#xff0c;取得了光辉成绩。2022年2月28日&#xff0c;在省数字化改革推进大会&#xff0c;回顾一年来数字化改革的主要成效&#xff0c;研究部署2022年数字化改革目标任务&#xff0c;在…

Spring框架(六):SpringTransaction事务的底层原理、xml配置和注解配置

SpringTransaction事务的底层原理、xml配置和注解配置引子Spring事务入门搭建Test环境基于XML的方式配置事务Spring事务的隔离级别Spring事务的传播行为通过Annotation方式配置Spring的事务引子 痛定思痛&#xff0c;主要问题出现在自己雀氏不熟悉框架底层、一些面试题&#x…

【源码分析】Springboot启动流程源码分析

1.简介 springboot版本&#xff1a;2.7.2 SpringApplication类是用来执行Spring框架启动的引导类。 有两种方式可以进行启动引导&#xff1a; 通过静态方法SpringApplication.run启动。先创建SpringApplication实例&#xff0c;在调用的实例方法run进行启动。 无论是以上哪种…

资源管理管理

资源管理目录概述需求&#xff1a;设计思路实现思路分析1.PMI hr的理念2.双因素的理论3.马斯洛的需求层析理论4.延伸5.X&#xff0c;Y理论Z 理论期望理论&#xff1a;亚当斯公共理论边际福利&#xff0c;光环效应&#xff0c;额外待遇&#xff0c;皮的原理&#xff0c;KISS原理…

阿里P9大牛带你在简历上写精通Spring与Boot高级功能

前言 蓦然回首自己做开发已经十年了&#xff0c;这十年中我获得了很多&#xff0c;技术能力、培训、出国、大公司的经历&#xff0c;还有很多很好的朋友。但再仔细一想&#xff0c;这十年中我至少浪费了五年时间&#xff0c;这五年可以足够让自己成长为一个优秀的程序员&#…

QT - 模型与视图

经典MVC模式中&#xff0c;M是指业务模型&#xff0c;V是指用户界面&#xff0c;C则是控制器&#xff0c;使用MVC的目的是将M和V的实现代码分离&#xff0c;从而使同一个程序可以使用不同的表现形式。其中&#xff0c;View的定义比较清晰&#xff0c;就是用户界面。 MVC 不是一…

银行 测试|测试开发 面试真题|面经 汇总

招银测开面经 一面 1.面向对象3大特征 2.java是否能多继承&#xff0c;怎么实现多继承 3.抽象类 4.数据库特性&#xff0c;隔离级别 5.sql语句查找 6.static关键字的使用 7.手撕&#xff1a;寻找字符串出现频率最高的字符 8.代码改进和测试 二面 1.先闲聊了几句&…

Python面向对象编程

本篇内容: 1、反射  2、面向对象编程  3、面向对象三大特性  4、类成员  5、类成员修饰符  6、类的特殊成员  7、单例模式 反射 python中的反射功能是由以下四个内置函数提供&#xff1a;hasattr、getattr、setattr、delattr&#xff0c;改四个函数分别用于对对象…

m基于GA遗传算法的高载能负荷响应优化控制模型matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 高载能企业执行子站接收负荷调整指令后&#xff0c;需将有功功率、无功功率调整总量合理分配给各用能设备/系统。研究高载能负荷响应优化控制模型&#xff0c;建立以高载能企业响应效益最优为目标…

ccf序列查询新解python满分_纯数学规律(学霸怎么想到的啊......)

题目 思路和代码 这题我也就看了好几个小时吧。终于&#xff01;有点懂了&#xff01; 上午看懂了用双指针写《下一个排序》后就在看这题。70分的代码很好写也很好想&#xff0c;就是模拟fx和gx&#xff0c;然后遍历一趟&#xff0c;得到最终的结果。 看了学霸的代码&#x…

使用桥梁振动自动识别车辆(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Qt在线安装教程(详细图文)

Qt在线安装教程&#xff08;详细图文一、前言二、QT账号的注册三、QT的安装的镜像四、安装的过程一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;小伙伴们&#xff0c;让我们一起来学习Qt在线安装。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、QT账号…

js-mark新时代的网页标记容器

js-mark &#x1f58d;️️ ✨ 它提供了一组可交互操作的工具来注释网页内容 ✨&#x1f58d;️ js-mark是一个JavaScript库&#xff0c;用于在浏览器。他是一个可以在任何网页做标记的前端库, 它提供了一组可交互操作的工具来注释网页内容。 支持标记文本和 持久化存储与还原…

LSTM和双向LSTM讲解及实践

目录&#xff1a; RNN的长期依赖问题LSTM原理讲解双向LSTM原理讲解keras实现LSTM和双向LSTM RNN 的长期依赖问题 在上篇文章中介绍的循环神经网络RNN在训练的过程中会有长期依赖的问题&#xff0c;这是由于RNN模型在训练时会遇到梯度消失(大部分情况)或者梯度爆炸(很少&…