为减少来自环境使用的无线传感器网络的传输次数而开发的方法(Matlab代码实现)

news2025/1/15 16:40:15

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

随着无线传感器网络(Wireless Sensor Network,WSN)的广泛应用,业界开始应用环境能量收集技术解决传感器节点的能量补充问题。而这类网络被统称为能量收集型无线传感器网络(Energy Harvesting Wireless Sensor Network,EH-WSN)。在能量收集型无线传感器网络中感知数据的可靠传输是值得研究的问题。

📚2 运行结果

主函数部分代码:

clear all
close all
​
% Declaración de los elementos del texto para el split
comillas=char(34);
barra=char(47);
coma=char(44);
pcoma=char(59);
dpuntos=char(58);
novalinea=newline;
guio=char(45);
fle=char(62);
p1=char(40);
p2=char(41);
​
%%% Format fitxer PM10 i soroll
% Se abre el fichero y se obtienen los datos de cada elemento, son 8
fileID=fopen('dades_soroll_pm10.txt','r');
formatSpec=['%d' barra '%d' barra '%d'  '%d' dpuntos '%d' dpuntos '%d' pcoma '%d' pcoma '%d'];
C=textscan(fileID,formatSpec);
fclose(fileID);
​
% Se guarda cada elemento en su correspondiente variable
any=C{1}; 
mes=C{2};
dia=C{3};
hora=C{4}+14;
a=find(hora>=24);
hora(a)=double(hora(a)-24);
minut=C{5}+27;
a=find(minut>=60);
minut(a)=double(minut(a)-60);
​
%%% Transformació dels valors analògics a dBs
soroll=C{8}; %Ruido en analógico
y1=30;
x1=0;
y2=78.8;
x2=3326;
pendent=(y2-y1)/(x2-x1);
​
%%% Variables para transmitir
pm10=double(C{7}); %Contaminación atmosférica
soroll_dbs=double(pendent.*(soroll-x1)+y1); %Contaminación acústica
​
%%
%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%%
%%
%
%%%
%%%
%%%
%%%
%%%
%%%
%%            PRUEBAS            %
%%%
%%%
%%%
%%%
%%%
%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
​
% ESCENARIO IV: Multi-armed Bandit
%Obtenemos el periodo de muestreo mas optimo para cada hora del dia
m = length(pm10); %total de muestras
T = [2 3 5 10]; %periodos posibles
rewards = zeros(24, length(T)); %tabla de recompensas para cada hora y periodo
epsilon = 0.2; %epsilon con valor estandar
vr1 = pm10; %copia del vector de datos pm10
vr2 = soroll_dbs; %copia del vector de datos ruido
j = 1; %variable iniciada en 1 para el bucle e-greedy (posicion actual del vector)
ja = j; %variable para almacenar la posicion anterior en el bucle e-greedy y calcular la recompensa
rewards(1:24) = 0; %iniciamos el algoritmo con periodo 2
c_acciones = zeros(24, length(T)); %cantidad de veces que escoge una accion por hora
c_greedy = zeros(2,1); %cantidad de veces que decide explotar/explorar
c_rewards = zeros(24, length(T)); %cantidad de veces que sale cada recompensa
r_total = 0;
​
for i=1:100 %iteraciones de aprendizaje
​
    %recorremos vector explorando/explotando 
    while j<m
​
        if rand < 0.05
            %explorar
            c_greedy(1) = c_greedy(1) + 1;
            [~,t] = max(rewards(hora(j)+1,:)); %obtenemos el periodo con mayor recompensa
            T2 = T(T~=T(t)); %los sacamos para explorar otra opcion
            t = T2(randi(length(T2))); %nuevo periodo
            c_acciones(hora(j)+1, find(T==t)) = c_acciones(hora(j)+1, find(T==t)) + 1;
        else
            %explotar
            c_greedy(2) = c_greedy(2) + 1;
            [~,t] = max(rewards(hora(j)+1,:)); %cogemos el periodo con mayor recompensa acumulada
            t = T(t); %nuevo periodo
            c_acciones(hora(j)+1, find(T==t)) = c_acciones(hora(j)+1, find(T==t)) + 1;
        end
​
        %cogemos muestra
        ja = j; %guardamos posicion anterior
        j = j + t; %nueva posicion
        if j <= m
            %calculamos recompensa: se comprueban las muestras intermedias entre dos
            %transmisiones, si no superan el umbral se suma 1 a la recompensa,
            %si lo supera no se suma nada
            r_total = 0;
            for k=ja+1:j-1
                %%%%%%%%UMBRALES PM10%%%%%%%%               
                %if abs(vr1(k)-pm10(j)) == 0 %sin umbral
                %if abs(vr1(k)-pm10(j)) <= 1 %umbral minimo
                %if umbral_pm(vr1(k),pm10(k)) == 0 %umbral adaptado
                %%%%%%%%UMBRALES RUIDO%%%%%%%%
                if abs(vr2(k)-soroll_dbs(j)) == 0 %sin umbral
                %if abs(vr2(k)-soroll_dbs(j)) <= 3 %umbral minimo
                %if abs(vr2(k)-soroll_dbs(j)) <= 10 %umbral maximo
                    r_total = r_total + 1;
                end
            end

🎉3 参考文献

​[1]高昊德. 恶劣环境下EH-WSN中数据可靠传输相关研究[D].内蒙古大学,2022.

部分理论引用网络文献,若有侵权联系博主删除。

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

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

相关文章

template和component自定义组件之间的区别

在小程序中自定义组件 component 方式和组件模板 template 2种方式实现页面组件化。 一、component自定义组件 1.概念 自定义组件是指可以被多个页面使用的组件&#xff0c;可以在小程序中多次复用。在开发中可以将一个页面中的代码和样式抽象出来&#xff0c;然后创建一个自定…

百汇BCR:如何参与外汇交易?哪个交易时间更好?

外汇市场时连续24小时运转的&#xff0c;也就是说随时都可以参与交易。那不同的交易时间进场是否会影响交易结果&#xff1f;哪个时间参与交易更好&#xff1f; 一、国际主要市场外汇交易时间&#xff08;北京时间&#xff09; 新西兰惠灵顿外汇市场&#xff1a;04&#xff1a…

基于微信小程序的新冠疫苗预约系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;微信小程序 && Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项…

ABAP OOALV模板(Custom Control)

该方法OOALV需要将ALV置入屏幕上的自定义控件中 alv较少时具有代码可读性可维护性高的特点&#xff0c;实现起来较为简单&#xff0c;但由于custom control固定了位置所以无法动态拖拽边框 创建报表程序后通过se80对象浏览器新建屏幕9001 点击布局进入屏幕制作器界面 将custom…

Cy5.5-PEG2000-NHS; NHS-PEG-Cy5.5,活性荧光标记材料,可用于标记抗体多肽

CY5.5-PEG-NHS&#xff0c;CY5.5-聚乙二醇-活性酯 中文名称&#xff1a;CY5.5-聚乙二醇-活性酯 英文名称&#xff1a;CY5.5-PEG-NHS 性状&#xff1a;粉末或固体&#xff0c;取决于分子量 溶剂&#xff1a;溶于水和大部分常规有机溶剂 分子量&#xff1a;1k、2k、3.4k、5k…

YouCompleteMe(YCM)安装

vim在各个linux版本中是个比较好编辑器&#xff0c;反正nano我是用不惯。但这个ycm的安装也是不断的在变&#xff0c;现在的安装比之前要简单的多&#xff0c;基本个几命令就搞定了&#xff0c;而且 也不用关心系统里有没有vim,ycm已经可以自动安装。具体安装步骤如下&#xff…

第一届6G智能无线通信系统大赛分享会暨颁奖典礼顺利举办

5月17日&#xff0c;第一届6G智能无线通信系统大赛分享交流会暨颁奖典礼在上海顺利举行&#xff0c;宣告大赛圆满收官。 颁奖典礼现场合影 本次大赛在6G研究的关键发展阶段适时提出&#xff0c;旨在向社会各界推广6G愿景、先进技术和概念&#xff0c;广泛吸引全社会的优秀人才…

前端换肤,聊一聊主题切换那些事

一些网站通常会提供白天、夜间模式&#xff0c;以及自定义主题等等&#xff0c;这种主题切换也就是本文说的前端换肤。 这次案例用的是白天和夜间模式的切换&#xff0c;在做换肤之前&#xff0c;得先知道一件事情&#xff1a;css的变量定义&#xff0c;对变量定义不熟悉的同学…

DINO损失函数构造解析

损失函数 首先看下模型的输出结果&#xff1a; output_cls&#xff1a;torch.Size([2, 900, 3]) output_box&#xff1a;torch.Size([2, 900, 4]) 即设置batch-size2&#xff0c;900个预测框 真值信息如下&#xff1a;第一张图片内有4个真值框&#xff0c;第二张图片亦然 随后…

面试官:前端如果 100 个请求,你怎么用 Promise 去控制并发?

摘要&#xff1a; 时隔两年半&#xff0c;我&#xff0c;一个卑微的前端菜鸡&#xff0c;又来写面经了&#xff01;以为钱是程序员年轻奋斗的动力&#xff01;作为一个程序员&#xff0c;在一个地方慢慢成长后会产生一个能力小提升的一种傲娇&#xff01;希望你们一跳涨好几丈。…

【问题总结】不使用回滚,如何删除/剔除/回退 远程仓库的错误commit。

场景描述 某次使用IDEA操作GIT时&#xff0c;将一些【被忽略】的文件都提交到commit中&#xff0c;并且被push到远程仓库&#xff0c;甚至还被合并到了主分支中该怎么办&#xff1f; 解决思路 分享两种思路 删除/回退/剔除 掉远程错误的分支重新commit一次正确的分支 删除…

企业落地数字化转型,如何部署战略规划

当前环境下&#xff0c;各领域企业通过数字化相关的一切技术&#xff0c;以数据为基础、以用户为核心&#xff0c;创建一种新的&#xff0c;或对现有商业模式进行重塑就是数字化转型。这种数字化转型给企业带来的效果就像是一次重构&#xff0c;会对企业的业务流程、思维文化、…

降低 Spark 计算成本 50.18 %,使用 Kyligence 湖仓引擎构建云原生大数据底座,为计算提速 2x

2023 中国开源未来发展峰会于 5 月 13 日成功举办。在大会开源原生商业分论坛&#xff0c;Kyligence 解决方案架构高级总监张小龙发表《云原生大数据底座演进 》主题演讲&#xff0c;向与会嘉宾介绍了他对开源发展的见解&#xff0c;数据底座向云原生湖仓一体架构演进的趋势&am…

建立在Safe生态的—GameFi SocialFi双赛道项目No.1头号玩家

最近大家关注的重点在BRC-20和MEME项目&#xff0c;人们似乎更在意短期的投机回报。而在这之外&#xff0c;一个web3的游戏——No.1头号玩家却得到了大量的玩家支持。 据了解&#xff0c;No.1是一个GameFi & SocialFi的双赛道web3游戏&#xff0c;中文名称为头号玩家。它是…

系统分析师上午题,经典易错题目

CRC即循环冗余校验码(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。在CRC校验方法中,进行多项式除法(模2除法)运算后的余数为校验字段。第一个空的分析,系统读记录的时间为33/11=3ms,对第一种情况:…

计算机毕业论文选题推荐|软件工程|系列七

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于(***语言)的家政服务系统…

Android 打开webView黑屏闪烁问题排查

______ NO.1 ______ 前言 最近在研发项目的时候&#xff0c;有个模块调用webView功能&#xff1b; 点击搜索框&#xff0c;进入webView页面&#xff0c;出现了黑色过渡页面&#xff0c;效果如下&#xff1a; ______ NO.2 ______ 排查问题 个人在排查此问题的时候&#xff0c;用…

Redis缓存双写一致性之更新策略

Redis缓存双写一致性之更新策略 一 面试题引入二 缓存双写一致性三 双写双检加锁策略四 数据库和缓存一致性的集中更新策略4.1 最终一致性4.2 可以关机的情况下4.3 不能关机的情况下&#xff0c;四种更新策略4.3.1 先更新数据库&#xff0c;再更新缓存4.3.2 先更新缓存&#xf…

【算法学习系列】03 - 由[1-5]等概率随机实现[2-10]等概率随机

文章目录 约定条件说明解决方案构造 0 1 发生器函数 f2()计算需要几个二进制位验证 2-10 等概率返回某个整数 总结 约定条件说明 假定 f() 是一个函数&#xff0c;保证 [1, 5] 范围内等概率返回一个整数实现 2-10 等概率随机不能使用 Math.random() 函数&#xff0c;只能使用函…

栈与队列的性质互换

本期内容&#xff1a;栈&#xff0c;队列的定义性质&#xff0c;性质转换 栈&#xff0c;队列的定义性质&#xff0c;性质转换 认识栈实现栈 队列实现 性质转换 认识栈 栈&#xff08;stack&#xff09;又名堆栈&#xff0c;它是一种运算受限的线性表。限定仅在表尾进行插入和…