无线传感网技术实验二

合集下载

无线传感器实验二报告

无线传感器实验二报告

浙江工业大学计算机学院实验报告实验名称无线传感网络实验之丢包率检测日期 2014年12月30日一、实验内容本次实验主要是通过代码的编写测试节点的发送功率和距离的远近对接收节点的丢包率的影响。

对发送功率的设置是通过修改CC2420.h文件中的参数实现的。

其中距离的远近的调节是容易实现的。

而对丢包率的计算是由接收节点的主机B将收到的数据包打印到屏幕上,主机A烧写的节点则是实现每次发送100个数据包。

二、程序源代码主机A(发送方)✧BlinkToRadio.h#ifndef BLINKTORADIO_H#define BLINKTORADIO_Henum {AM_BLINKTORADIO = 6,TIMER_PERIOD_MILLI = 250};typedef nx_struct BlinkToRadioMsg {nx_uint16_t nodeid;nx_uint16_t counter;} BlinkToRadioMsg;#endif✧BlinkToRadioAppC.nc#include <Timer.h>#include "BlinkToRadio.h"configuration BlinkToRadioAppC {}implementation {components MainC;components LedsC;components BlinkToRadioC as App;components new TimerMilliC() as Timer0;components ActiveMessageC;components new AMSenderC(AM_BLINKTORADIO);components new AMReceiverC(AM_BLINKTORADIO);App.Boot -> MainC;App.Leds -> LedsC;App.Timer0 -> Timer0;App.Packet -> AMSenderC;App.AMPacket -> AMSenderC;App.AMControl -> ActiveMessageC;App.AMSend -> AMSenderC;App.Receive -> AMReceiverC;}BlinkToRadioC.nc#include <Timer.h>#include "BlinkToRadio.h"module BlinkToRadioC {uses interface Boot;uses interface Leds;uses interface Timer<TMilli> as Timer0;uses interface Packet;uses interface AMPacket;uses interface AMSend;uses interface Receive;uses interface SplitControl as AMControl;}implementation {uint16_t counter;message_t pkt;bool busy = FALSE;void setLeds(uint16_t val) {if (val & 0x01)call Leds.led0On();elsecall Leds.led0Off();if (val & 0x02)call Leds.led1On();elsecall Leds.led1Off();if (val & 0x04)call Leds.led2On();elsecall Leds.led2Off();}event void Boot.booted() {call AMControl.start();}event void AMControl.startDone(error_t err) {if (err == SUCCESS) {call Timer0.startPeriodic(TIMER_PERIOD_MILLI);}else {call AMControl.start();}}event void AMControl.stopDone(error_t err) {}event void Timer0.fired() {counter++;//发送100个数据包if(counter <101) {if (!busy) {BlinkToRadioMsg* btrpkt =(BlinkToRadioMsg*)(call Packet.getPayload(&pkt,sizeof(BlinkToRadioMsg)));if (btrpkt == NULL) {return;}btrpkt->nodeid = 10;btrpkt->counter = counter;if (call AMSend.send(AM_BROADCAST_ADDR,&pkt, sizeof(BlinkToRadioMsg)) == SUCCESS) {busy = TRUE;}}}}event void AMSend.sendDone(message_t* msg, error_t err) {if (&pkt == msg) {busy = FALSE;}}event message_t* Receive.receive(message_t* msg, void* payload, uint8_t len){if (len == sizeof(BlinkToRadioMsg)) {BlinkToRadioMsg* btrpkt = (BlinkToRadioMsg*)payload;setLeds(btrpkt->counter);}return msg;}}✧MakefileCOMPONENT=BlinkToRadioAppCinclude $(MAKERULES)主机B(接收方)✧BlinkToRadio.h#ifndef BLINKTORADIO_H#define BLINKTORADIO_Henum {AM_BLINKTORADIO = 6,TIMER_PERIOD_MILLI = 250};typedef nx_struct BlinkToRadioMsg {nx_uint16_t nodeid;nx_uint16_t counter;} BlinkToRadioMsg;#endif✧BlinkToRadioAppC.nc#include <Timer.h>#include "BlinkToRadio.h"configuration BlinkToRadioAppC {}implementation {components MainC;components LedsC;components BlinkToRadioC as App;components new TimerMilliC() as Timer0;components ActiveMessageC;components new AMSenderC(AM_BLINKTORADIO);components new AMReceiverC(AM_BLINKTORADIO);App.Boot -> MainC;App.Leds -> LedsC;App.Timer0 -> Timer0;App.Packet -> AMSenderC;App.AMPacket -> AMSenderC;App.AMControl -> ActiveMessageC;App.AMSend -> AMSenderC;App.Receive -> AMReceiverC;}BlinkToRadioC.nc#include <Timer.h>#include "BlinkToRadio.h"#include "printf.h"module BlinkToRadioC {uses interface Boot;uses interface Leds;uses interface Timer<TMilli> as Timer0;uses interface Packet;uses interface AMPacket;uses interface AMSend;uses interface Receive;uses interface SplitControl as AMControl;}implementation {uint16_t counter;message_t pkt;bool busy = FALSE;uint32_t nowtime;uint16_t Number=0;event void Boot.booted() {call AMControl.start();}event void AMControl.startDone(error_t err) {if (err == SUCCESS) {}else {call AMControl.start();}}event void AMControl.stopDone(error_t err) {}event void Timer0.fired() {printf("now is:%d\n",(call Timer0.getNow()));printfflush();call Leds.led0Toggle();}event void AMSend.sendDone(message_t* msg, error_t err) {if (&pkt == msg) {busy = FALSE;}}event message_t* Receive.receive(message_t* msg, void* payload,uint8_t len){if (len == sizeof(BlinkToRadioMsg)) {BlinkToRadioMsg* btrpkt = (BlinkToRadioMsg*)payload;if(btrpkt->nodeid==10){//====================================if (!busy) {call Leds.led2Toggle();Number++;printf("No.%d pakage is received,thenumber:%d\n",btrpkt->counter,Number);printfflush();if (call AMSend.send(AM_BROADCAST_ADDR, &pkt,sizeof(BlinkToRadioMsg)) == SUCCESS) {busy = TRUE;}}}}return msg;}}MakefileCOMPONENT=BlinkToRadioAppCCFLAGS += -I$(TOSDIR)/lib/printfinclude $(MAKERULES)三、实验步骤1.在实验四的代码基础上,修改BlinkToRadioC.nc中的事件Timer0.fired()和事件Receive.receive中收到数据包后输出对应的信息。

传感网技术实验报告

传感网技术实验报告

传感网技术实验报告1. 引言传感网技术是一种集传感、计算和通信为一体的无线网络技术,广泛应用于物联网、智能家居、环境监测等领域。

本实验旨在探索和学习传感网技术的原理和应用,通过设计和构建一个简单的传感网系统,加深对传感网技术的了解和认识。

2. 实验目标本实验的主要目标如下:1. 理解传感网技术的基本原理和通信方式;2. 学习使用传感器采集环境数据,并通过传感网传输到中心节点;3. 实现传感节点之间的数据通信和协作。

3. 实验设备和材料本实验所需设备和材料如下:- 传感器节点:多个可编程节点,例如Arduino等;- 中心节点:一台计算机或单片机开发板;- 无线通信模块:用于传感节点之间的通信;- 传感器:根据实验需求选择合适的传感器;- 连接线:用于连接传感器节点和中心节点。

4. 实验步骤4.1 硬件搭建根据实验需求,将传感器节点和中心节点按照拓扑结构连接起来。

每个传感器节点连接一个或多个传感器,用于采集环境数据。

中心节点负责接收传感器节点的数据,并进行处理和存储。

4.2 软件编程针对传感器节点和中心节点,编写相应的软件程序。

传感器节点的程序需要实现数据采集、封装和发送,中心节点的程序需要实现数据接收、解析和处理。

4.3 网络通信配置配置传感节点之间的网络通信参数,包括无线通信模块的通信频率、传输速率和网络拓扑结构。

确保传感节点之间可以正常通信和协作。

4.4 实验数据采集和分析使用传感节点采集环境数据,例如温度、湿度等,并通过传感网传输到中心节点。

中心节点接收数据后进行分析和处理,比如计算平均值、最大值等。

4.5 实验结果展示将实验结果进行展示和分析,比如使用图表展示温度的变化趋势、湿度的时序分布等。

根据实验结果,可以对传感网系统进行优化和改进。

5. 实验总结本实验通过设计和构建一个简单的传感网系统,深入了解和学习了传感网技术的原理和应用。

从硬件搭建到软件编程,从网络通信配置到实验数据采集和分析,全面掌握了传感网技术的实际操作和应用方法。

安徽工业大学WSN无线传感器网络实验报告.doc

安徽工业大学WSN无线传感器网络实验报告.doc

《无线传感器网络实验报告》指导教师:卫琳娜班级:物联网131 班实验箱序号: 3,13 等组员姓名学号:程少锋(注:报告中有部分实验截图)实验日期: 2016 年 4 月 28 日 3,4 节实验一、软硬件平台使用[1]感知 RF2 实验箱 -WSN 系统结构系统该系统根据不同的情况可以由一台计算机,一套网关,一个或多个网络节点组成。

大小只受PC 软件观测数量,路由深度,网络最大负载量限制。

感知RF2 实验箱无线传感器实验平台内配置ZigBee2007/PRO 协议栈在没有进行网络拓补修改之前支持5级路由,31101 个网络节点。

传感器网络系统结构图如下图所示。

[2]感知 RF2 实验箱 -WSN 系统工作流程基于 ZigBee2007/PRO 协议栈无线网络,在网络设备安装过程,架设过程中自动完成。

完成网络的架设后用户便可以由PC 机发出命令读取网络中任何设备上挂接的传感器的数据,以及测试其电压。

[3]感知 RF2 实验箱 -WSN 硬件介绍感知 RF2 物联网实验箱的无线传感器网络开发平台主要硬件包括:C51RF-CC2530-WSN 仿真器、 ZigBee无线高频模块、节点底板、传感器模块以及其它配套线缆等。

网关节点由节点底板+ZigBee无线高频模块组成。

传感器节点由节点底板+ZigBee无线高频模块组成+传感器模块组成。

路由节点硬件组成与传感器节点相同,软件实现功能不同。

[4]实验目的:熟悉实验平台前期架构,便于后面程序的烧写。

[5]实验步骤:1 安装必要软件(实际实验室中软件已经下载安装完毕,只要通过仿真器C51RF-3 进行程序在线下载、调试、仿真即可)1) 在实验室机器 E 盘的《无线龙实验箱相关资料/ 无线传感器实验资料201604》中安装ZigBee 开发集成环境 IAR7.51A ,详细请参考“ \C51RF-CC2530-WSN 使用说明书”目录下的“ IAR 安装与使用”。

无线传感器网络指导书-信息与控制学院

无线传感器网络指导书-信息与控制学院

无线传感器网络(ZIGBEE)实验指导书(CC2530)(适用于电子、通信等专业)沈阳工学院2012年12月前言本课程主要学习Zigbee无线传感器网络的特点,并且以CC2430为主要控制器介绍Zigbee网络中的编程情况,此芯片采用C语言进行编程,并且已经有了较成熟的发展,学生同学理论学习掌握了芯片的基本理论知识,以及在编程过程的相关寄存器的设置。

为了使学生更好地理解和深刻地把握这些知识,并在此基础上,训练和培养学生的动手能力,设置了五个实验项目,其中包括四个验证性实验,一个综合性实验。

这些实验需要学生了解实验器材,熟悉其使用方法,掌握编程软件的操作方法,并且重点掌握在如何编写程序以及程序中的寄存器的设计。

本实验指导书适用于通信专业,强调实际操作,注重基本仪器地使用方法及动手能力的培养。

目录验证性实验实验一IAR编程软件的使用与简单实例实验二CC2530片内温度与1/3电压的测量实验三CC2530串口发/收数实验实验四点对点无线数据通信实验综合性实验实验五Zigbee协议栈实验实验一IAR编程软件的使用与简单实例(一)实验目的1、熟悉IAR软件的使用方法。

2、掌握编辑、下载、运行程序的方法3、利用IAR软件会编写简单的程序(二)实验设备1、zigbee实验装置1套2、安装有IAR软件的PC机1台3、PC机与zigbee模块通讯电缆1根(三)实验内容一、会使用IAR软件IAR编程软件简介1、IAR软件的启动及建立一个新工程首先安装IAR编程软件。

安装之后,选择图标双击鼠标左键,出现如图1.1。

新建一个工程文件。

新建一个工程选择Empty project默认配置,单击0K弹出保存对话框这个时候我们在桌面上建立一个名为project的文件夹,输入项目的文件名,并将项目也取名为“project”将此文件保存在project文件夹中,会产生一个ewp后缀的文件。

保存工程,弹出保存工程对话框。

输入工程文件名,单击保存退出,系统将产生一个eww为后缀的文件这样,我们就建立了IAR的一个工程文件,接下来,我们对这个工程加入一些特有的配置。

无线传感器网络实验手册cygwin

无线传感器网络实验手册cygwin

XLUC目录实验一开发环境搭建实验 (2)实验二程序烧录实验 (10)实验三硬件接口实验 (13)实验四 ADC采样实验 (19)实验五串口通讯实验 (24)实验六点对点射频实验 (32)实验七传感器添加实验 (39)实验八基于网关板的pc机数据采集和分析实验 (48)实验九基于sink节点数据采集和分析实验 (57)实验十基于web的数据录入和数据访问实验 (61)实验一开发环境搭建实验以下步骤描述了如何逐步搭建无线传感器网络实验开发环境注:本开发环境是在Windows XP操作系统下搭建的先决条件:∙AtoseNet环境:Cygwin atos4tinyos.msi安装包,在光盘的路径为,无线传感器网络1.5\TinyOS2\TinyOS_install\atos4tinyos.msi 。

∙Keil C51编译器安装包:c51v808a.exe,在光盘的路径为,无线传感器网络1.5\TinyOS2\TinyOS_install\c51v808a.exe 。

∙IIS服务器:准备一张Windows XP professional 的安装光盘。

∙SQL SERVER 2005数据库管理工具:准备一张SQL SERVER 2005的安装光盘。

创建AtoseNet环境:Cygwin1.打开无线传感器网络光盘,进入如下路径\TinyOS2\TinyOS_install\, 双击atos4tinyos.msi 进入安装过程2.进入如下界3.单机下一步4.选择合适的路径(这里选择缺省路径),点击“下一步”5.单击安装,进入安装进程如下6.安装完成后将出现如下两个界面7.选择完路径后单击“点击开始安装”8.进入Cygwin安装界面,安装完成后自动弹出如下界面:9.请任意键后即可完成安装。

桌面上会自动建立Cygwin的快捷方式,单击进入即可安装Keil C51 编译器10.打开无线传感器网络光盘,进入如下路径\TinyOS2\TinyOS_install\, 双击c51v808a.exe 进入安装过程11.单击“Next”并且选中“I agree to all the terms of the preceding LicenseAgreement”12.选择默认的路径13.选择安装路径后,单击“Next”:14.输入用户名等资料后单击“Next”进入安装进度界面:15.单击“Finish”完成安装过程。

无线传感网络技术实验报告

无线传感网络技术实验报告

无线传感网络技术实验报告个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================无线传感网络技术实验报告学院 : 物理与机电工程学院专业 : 电子科学与技术班级 : 2013级2班学号 :姓名 :指导老师 :感谢你来到我的生命中,带来了美丽、快乐,感谢你给了我永远珍视的记忆。

==================================================================== ===欢迎下次再来学习个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================一、 ADC的采样实验实验的目的:通过本次实验了解到了CC2530 ADC的相关寄存器的详细配置;通过本次实验了解到了CC2530的ADC单次采集功能的运用。

实验的内容:1. 根据相关的实验配置ADC寄存器;2. 为了实现可调电阻的电压采集。

实验设备:硬件部分:ZIGBEE调试底板一个 ZIGBEE的仿真器一个;ZIGBEE模块板一个电源一个软件部分:IAR751的安装包仿真器驱动程序实验的原理:0端口的引脚的信号作为ADC的输入,本次实验的ADC 有三种种类的控制寄存器,他们分别为:ADCCON1, ADCCON2 和ADCCON3,这些寄存器用于配置ADC,通过这个来并报告试验结果。

无线传感网络实验报告

无线传感网络实验报告

《无线传感网络技术与应用》实验报告目录一、研究背景 (1)二、研究内容 (1)三、传感器原理介绍 (1)(一)MQ-2 气体传感器简介 (1)(二)声音检测传感器简介 (2)(三)声光报警器原理 (3)(一)烟雾传感器模块 (4)(二)声音检测传感器模块 (5)(三)声光报警器模块 (7)(四)协调器与终端模块 (8)五、实验分析 (9)(一)烟雾传感器数据分析 (9)(二)声音检测传感器模块数据分析 (9)(三)声光报警检测传感器模块数据分析 (10)六、实验中出现的问题 (11)(一)打开文件存在缺失 (11)(二)串口无法识别 (11)(三)安装stm8或stem32时无法打开文件 (11)(四)做数据透传模型实验时无法通信 (11)七、实验总结 (11)一、研究背景近几年,随着我国经济的不断发展和构建和谐社会理念的提出,特别是重大工程对安防行业的刺激和需求,安防行业面临着前所未有的发展机遇。

结合当前先进技术提高安全防范系统性能,成为当前安防发展的一个重要课题。

在分析了无线传感网络在国内外安防系统应用现状的基础上,针对安防系统存在的问题,提出一种基于无线传感网络的智能安防系统设计方案。

与传统安防系统相比,具有免布线、费用低、布置方便等优点。

在综合考虑了当前流行的无线通信技术后,选择具有数据吞吐量小、低功耗、网络容量大等优点的ZigBee 技术作为构建智能安防无线通信网络的关键技术。

可以预计,ZigBee 技术将在家庭智能化、安防行业、工业控制等领域获得广泛应用。

二、研究内容本次课题研究涉及到三个传感器,分别是烟雾传感器、声音检测传感器、声光报警传感器,通过相关程序的烧写到实验板上,根据每个传感器的特点对每个传感器进行测试,通过观察串口终端的数字变化,检查外部环境的变化是否有数据变化。

最后根据实验现象进行总结分析。

三、传感器原理介绍(一)MQ-2 气体传感器简介MQ-2 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。

无线传感器网络实验报告

无线传感器网络实验报告

桂林电子科技大学实验报告2015-2016学年第一学期开课单位海洋信息工程学院适用年级、专业课程名称无线传感器网络主讲教师王晓莹课程序号1510344课程代码BS1620009X0实验名称ns2实验环境配置及应用实验学时6学时学号姓名一、实验目的1)掌握虚拟机的安装方法。

2)熟悉Ubuntu系统的基本操作方法。

3)掌握ns2环境配置。

4)掌握tcl语言的基本语句及编程规则。

5)了解使用ns2进行网络仿真的过程。

二、实验环境1)系统:Windows 10 专业版 64位2)内存:8G3)软件:VMware Workstation 12 Pro三、实验内容(一)安装虚拟机(简述安装步骤)a)在VMware官网(https:///cn)下载程序VMware Workstation12 Prob)双击打开下载好的程序自动解压,解压完成后进入安装向导。

c)程序安装完成后,对程序进行注册,VMware Workstation 12 Pro key/注册码:5A02H-AU243-TZJ49-GTC7K-3C61Nd)虚拟机程序安装成功。

(二)安装Ubuntu系统(简述安装步骤)a)网上下载ubuntu-14.04.3-desktop-amd64.iso文件(Ubuntu 14 64位系统镜像)b)打开VMware Workstation 12 Pro程序,创建一个新的虚拟机c)进入新建虚拟机向导,选择自定义配置安装进行下一步。

d)安装客户机操作系统,择安装程序光盘映像文件,放入已下载好的Ubuntu 1464位系统镜像文件,进行简易安装。

e)选择安装路径和配置完成向导,进入Ubuntu系统安装界面,等待安装完成。

(三)安装ns2软件及相关环境配置(简述安装步骤及环境配置过程)a)先更新一下系统。

在终端输入:sudo apt-get update #更新源列表sudo apt-get upgrade #更新已安装的包sudo apt-get dist-upgrade #更新软件,升级系统b)安装几个需要使用的软件包sudo apt-get install build-essentialsudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev #for tcl and tksudo apt-get install libxmu-dev libxmu-headers #for namc)下载ns-allinone-2.35.tar.gz。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《无线传感网技术》实验二班级:微电子1102 学号:0301110213 姓名:王绪安一、实验目的通过仿真实验,掌握无线传感网络联通率与通信半径以及节点数目之间的关系。

二、实验内容(1)在不同节点数目n 情况下,用Matlab 拟合出连通率与通信半径的关系曲线。

(2)在不同通信半径R 情况下,用Matlab 拟合出连通率与节点数量n 的关系曲线。

三、实验思路分析过程(包括程序说明)用计算机语言编写图的连通性判断算法,判断节点是否连通以及确定连通分支的个数,Warshell 算法实现方法Warshell 算法Warshell 算法可解决图是否连通的问题, 而且效率很高。

在该算法中,矩阵P 是判断矩阵,1=ij p 表示从i 到j 连通,0=ij p 表示从i 到j 不连通。

T 矩阵是模拟节点的两两直接连通矩阵T ij =1表示从i 到j 连通,T ij =0表示从i 到j 不连通。

(1)置新矩阵 P:= T ;(2)k=1.....9,P=P*T ;循环叠乘得出最终连通矩阵。

(3)对P 矩阵P ij 进行连续判断,若有P ij <=0,则该图不连通,跳出循环。

(4)重复上面操作1000次,累计连通图的次数n,得出连通率。

四、实验程序(1)在不同节点数目n 情况下,用Matlab 拟合出连通率与通信半径的关系曲线。

rate_1 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(10,1);y=rand(10,1);for num=1:1:10for sec_num=1:1:10if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:9t=t*p;endfor i=1:1:10for j=1:1:10if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_1(k)=rate_1(k)+flag_overflow;endrate_1(k)=rate_1(k)/1000;endrate_2 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(20,1);y=rand(20,1);for num=1:1:20for sec_num=1:1:20if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:19t=t*p;endfor i=1:1:20for j=1:1:20if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_2(k)=rate_2(k)+flag_overflow;endrate_2(k)=rate_2(k)/1000;endrate_3 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(50,1);y=rand(50,1);for num=1:1:50for sec_num=1:1:50if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:49t=t*p;endfor i=1:1:50for j=1:1:50if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_3(k)=rate_3(k)+flag_overflow;endrate_3(k)=rate_3(k)/1000;endrate_4 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(100,1);y=rand(100,1);for num=1:1:100for sec_num=1:1:100if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:99t=t*p;endfor i=1:1:100for j=1:1:100if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_4(k)=rate_4(k)+flag_overflow; endrate_4(k)=rate_4(k)/1000;endx_lab=0.01:0.01:1;plot(x_lab,rate_1,'+-r');hold all;plot(x_lab,rate_2,'b--');hold all;plot(x_lab,rate_3,'ko-');hold all;plot(x_lab,rate_4,'g*-');xlabel( '通信半径')ylabel('网络连接概率')(2)在不同通信半径R情况下,用Matlab拟合出连通率与节点数量n的关系曲线。

%联通半径是0.05,0.15,0.25,0.35%x轴是节点数%y轴是联通率%k是结点数number_max = 1000;rate_1 = zeros(1,100);x_y_1 = [];r_1 = 0.15;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_1 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_1(num,1)-x_y_1(sec_num,1))^2+(x_y_1(num,2)-x_y_1(sec_num,2))^2)< r_1)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_1(k)=rate_1(k)+flag_overflow;endrate_1(k)=rate_1(k)/number_max;endrate_2 = zeros(1,100);x_y_2 = [];r_2 = 0.25;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_2 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_2(num,1)-x_y_2(sec_num,1))^2+(x_y_2(num,2)-x_y_2(sec_num,2))^2)< r_2)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_2(k)=rate_2(k)+flag_overflow;endrate_2(k)=rate_2(k)/number_max;endrate_3 = zeros(1,100);x_y_3 = [];r_3 = 0.35;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_3 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_3(num,1)-x_y_3(sec_num,1))^2+(x_y_3(num,2)-x_y_3(sec_num,2))^2)< r_3)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_3(k)=rate_3(k)+flag_overflow; endrate_3(k)=rate_3(k)/number_max;endrate_4 = zeros(1,100);x_y_4 = [];r_4 = 0.45;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_4 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_4(num,1)-x_y_4(sec_num,1))^2+(x_y_4(num,2)-x_y_4(sec_num,2))^2)< r_4)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_4(k)=rate_4(k)+flag_overflow;endrate_4(k)=rate_4(k)/number_max;endx_lab=1:1:100;plot(x_lab,rate_1,'+-r');hold all;plot(x_lab,rate_2,'b--');hold all;plot(x_lab,rate_3,'ko-');hold all;plot(x_lab,rate_4,'g*-');五、实验结果不同节点数n,连通率与通信半径R的关系曲线图一不同通信半径R,连通率与节点数n的关系曲线图二。

相关文档
最新文档