使用无线传感器网络进行源定位(Matlab代码实现)

news2024/11/30 0:44:32

    目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码

💥1 概述

本文提出了一种用于反狙击应用的源定位过程:​使用广义互相关(GCC)方法确定到达时间差(TDOA)值。时差值由混合球面插值/最大似然(SI/ML)估计方法用于确定射手位置。​

📚2 运行结果

主函数部分代码:

clc;
close all;
clear all;% N sensors, 1 source. Using sensor 1 as reference i.e (x1=0, y1=0, z1=0)
% -----------------------------------------------------
% Definition
% -----------------------------------------------------
nRun=100; % number of Monte Carlo runs
% uncomment one of them
 bML=0; % turn off ML calculation
%bML=1; % turn on ML calculation
% uncomment one of them
perturb=0; % turn off location perturbation
% perturb=1; % turn on location perturbation
% ----------------------------------------------------------------
% Actual source location (m) in Cartesian coordinates x, y and z
% Note: For simplicity, we only varies y for our simulation
% ----------------------------------------------------------------
xs_src_actual=[0];
% Varies the Y position (Choose 1)
%------------------------------------
ys_src_actual=[100]; %100 m
zs_src_actual=[0];
Rs_actual=sqrt(xs_src_actual.^2 + ys_src_actual.^2 + zs_src_actual.^2);
% calculate corresponding range Rs
bearing_actual=[xs_src_actual; ys_src_actual; zs_src_actual]/Rs_actual;
% calculate corresponding bearing
% ----------------------------------------------------------------
% Actual sensor location (m) in Cartesian coordinates x, y and z
% Note: For simplicity, we only use integers and then multiply with
% a scaling factor to produce the actual coordinates.
% e.g. [5 10 15] = [1 2 3] * 5 ;
% ----------------------------------------------------------------
% Scale wrt to 1m (Choose 1)
%------------------------------
scale_dist = 10; % 10 m
% (Choose 1 of the following sensor configuration for study)
%-------------------------------------------------------------
% 12x2 sensors arranged 2 rows
  xi=[0 0 1 1 2 2 3 3 4 4 5 5 0 0 1 1 2 2 3 3 4 4 5 5 ].*scale_dist;
  yi=[0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1].*scale_dist;
  zi=[0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1].*1.0;
 %20x2 sensors arranged 2 rows
%  xi=[0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9].*scale_dist;
%  yi=[0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1].*scale_dist;
%  zi=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1].*1.0;
% % Soldier configuration (each with 2 sensors). z= 1m apart vertically
temp=size(xi);
nSen=temp(1,2); % number of sensor (>4)
noisestd=1;
if (perturb==1)
randn('state',0);
tmp1=randn(3, nSen);
for i=1:2:nSen
xi(i)= xi(i) + noisestd*tmp1(1,i);
xi(i+1)= xi(i+1)+(noisestd+0.01)*tmp1(1,i); % less variance on the body
yi(i)= yi(i) + noisestd*tmp1(2,i);
yi(i+1)= yi(i+1)+(noisestd+0.01)*tmp1(2,i); % less variance on the body
end
zi=zi+0.01*tmp1(3,:); % less variance on the body
end
% RD noise (Choose 1)
% -----------------------------------------------------
Noise_Factor=0.02;
 % noise std = Std_Norm * (source distance). %we expect bigger noise variance for larger distance.
Noise_Var=(Noise_Factor*Rs_actual)^2;
% -----------------------------------------------------
% Functions
% -----------------------------------------------------
% Random Process
% AWGN
randn('state',0);
noise = sqrt(Noise_Var)*randn(nRun, 1);
%noise_mean = mean(noise, 2); % average along row
for k=1:nRun % Monte Carlo Simulation
Xi=[xi' yi' zi'];
Di= sqrt ((xi-xs_src_actual).^2 + (yi-ys_src_actual).^2 + (zi-zs_src_actual).^2);%distance between source ans sensor i
Ri= sqrt ((xi).^2 + (yi).^2 + (zi).^2);%distance between origin and sensor i
locSen=[xi' yi' zi'];
% using N sensors
for i=1:nSen-1
%d21=Di(2)-Di(1);
%d31=Di(3)-Di(1);..
%dn1=Di(n)-Di(1);
%d=[d21;d31;...;dn1];
d(i,1)=Di(i+1)-Di(1)+noise(k); %add noise to RD estimates%distance between sensor i,1
% delta2=Ri(2)^2-d(1)^2;
% delta3=Ri(3)^2-d(1)^2;...
% deltan=Ri(n)^2-d(1)^2;
% delta=[delta2;delta3;...deltan];
delta(i,1)=Ri(i+1)^2-d(1)^2;%delta
% s2= [xi(2) yi(2) zi(2)];
% s3= [xi(3) yi(3) zi(3)];...
% sn= [xi(n) yi(n) zi(n)];
% s=[s2;s3;...sn];
s(i,:)=[xi(i+1) yi(i+1) zi(i+1)];
end

🎉3 参考文献

[1]高强. 基于传感器网络的室内人员定位算法研究[D].东北大学,2011.

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

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

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

相关文章

uboot fatal error: configs/.h: No such file or directory 解决方法

环境 Win10 64位 ubuntu 20.04 虚拟机 VMware Workstation 16 Pro 开发板:NK-980IOT(NUC980DK61Y) gcc 交叉编译工具链: ARM 官方 gcc version 11.2.1 20220111 NUC980 uboot 版本 :尝试移植到 u-boot-2019.10&am…

【游戏逆向】《某山奇缘》发包函数

一个游戏我们拿来以后第一件事肯定是要去分析发包函数。 因为发包函数可以给我们很多有用的信息。 第一,所有的功能都可以通过发包实现。 第二,发包中的参数可以获悉游戏中的数据形式,例如某些参数是类型,ID是什么样的值。 第…

Java 中同步机制的几种方式及使用

在Java中,同步机制是用来解决多线程并发访问共享资源的问题。如果多个线程同时访问共享资源,可能会导致数据不一致、死锁等问题。Java中提供了多种同步机制,例如synchronized关键字、Lock接口、Semaphore类、CountDownLatch类等。本文将介绍J…

Vivado综合属性系列之二 SRL_STYLE

目录 一、前言 二、SRL_STYLE 2.1 移位寄存器实现方式 2.2 工程代码 2.3 参考资料 一、前言 移位寄存器SRL在工程中属于使用频率较高个模块,可用于存储数据,实现串并转换; 根据数据移动方向可分为左移寄存器,右移寄存器&#x…

Vue3-黑马(八)

目录: (1)vue3-进阶-antdv-分页 (2)vue3-进阶-antdv-搜索 (3)vue3-进阶-antdv-删除1 (1)vue3-进阶-antdv-分页 分页显示不对,修改下方分页条: …

Web 自动化笔记-第一章 Selenium 环境搭建

1.自动化测试能解决什么问题? 1. 解决-回归测试 2. 解决-压力测试 3. 解决-兼容性测试 4. 提高测试效率,保证产品质量 回归测试: 项目在发新版本之后对项目之前的功能进行验证 压力测试: 可以理解多用户同时去操作软件, 统计软件服…

近1500支队伍、6000名开发者齐聚,第三届Light技术公益创造营收官

在很多老年人看来,融入数字生活并不容易,经常误点广告、不时接到诈骗电话、不会操作智能手机……但有些老年人并不担心这些,“误点了付款,有人会打电话过来,提醒我不要被骗了。”一位老人放心地进行着“网上冲浪”。而…

Python程序员该如何提高薪资水平?我来谈谈实用的五大方法

今天我要跟小伙伴们讨论的话题是:Python程序员该如何提升自己的价值?换句话说,程序员该如何逐渐增加自己的薪资?我想这是大家都关心的一个问题。首先,我们要明确一点,程序员的价值所在是什么?关…

深度学习之图像分类(一):AlexNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet&#xff0c…

var、let、const和执行上下文

let/const/var let 基本语法 ES6新增了let命令,用于声明变量,其语法类似于var,但是所声明的变量只在let命令所在的代码块内有效 不存在变量提升 var命令会发生“变量提升”现象,即变量可以在声明之前使用,值为und…

【部署jar包到服务器】

部署打好的jar包到服务器 首先需要安装对应版本的jdk 查看所有可安装的jdk版本 yum -y list java 选择对应的安装 例如 yum install -y java-1.8.0-openjdk-devel.x86_64 安装好之后,查看jdk版本 java -version 默认安装位置在 usr/lib/jvm之中 倘若你之前的版本不对…

引爆海外市场:ChatGPT带来定制化营销活动的奇迹

在定制一场海外营销活动时,需要首先了解海外市场和定制营销活动的关键是研究目标市场的文化和消费习惯。这包括但不限于: 目标市场的语言和文化背景当地消费者的购买习惯和偏好该领域的市场趋势和竞争情况目标市场的法律法规、行业标准和规范推广渠道和…

编译opencv4.7.0 + opencv_contrib 记录

最近一个项目需要涉及到图像拼接算法,网上了解一番,也大致有思路: 1. 利用surf算法查找特征点 2. 过滤掉一些,获取good点 3. 然后进行配准(图像扭曲),对接 4. 形成最终拼接图片 这些工作&a…

NeRF原理简介及实现

“ NeRF(Neural Radiance Fields)是一种先进的计算机图形学技术,能够使用深度全连接神经网络优化场景的连续5D函数表示,从而生成高度逼真的3D场景。该技术的优势在于没有使用离散化的网格或体素来表示场景,而是使用一个…

【Pandas与SQL系列】Pandas实现分布函数percent_rank、cume_dist

目录 1,分布函数,1.1,percent_rank()1.2,cume_dist()1.3 SQL例子 2,Pandas 实现3,补充Pandas实现排序 1,分布函数, 应用场景:快速查看某个记录所归属的组内的比例 分布函数分类及基础语法&…

asp.net952-sqlserver学生成绩信息管理系统开发

本学生管理系统主要学校内部提供服务,系统分为管理员,教师和学生三部分。 本研究课题重点主要包括了下面几大模块:用户登录,管理员管理,教师信息管理,学生信息管理,课程信息管理,考试信息管理,成绩信息管理系统设置等功能。这几个…

基于深度自编码网络实现轴承故障诊断

1.网络模型(数据集为CWRU) 代码实现了一个基于DAE的分类模型,用于对给定数据集进行分类。首先,通过DAE模型对原始数据进行特征提取和降维,然后使用分类模型将提取的特征与标签相匹配,以便对新数据进行分类。 代码的主要流程: 导…

用激光点云估算建筑高度【PDAL|PostgreSQL】

LiDAR 数据可以非常强大地提取城市规模的地面和物体的高程。 在 One Concern,我们正在使用 LiDAR 数据提取地面和建筑物高程,以改进进入我们的自然灾害模型的暴露信息,最终估计洪水和地震的影响。 由于 3DEP 项目预计将在 2023 年之前收集全…

STM32------GPIO

GPIO 一、介绍 1、1 什么是GPIO? 输入输出端口 1、2 GPIO特点 1、不同封装IO数量不一样。 2、快速翻转,每次翻转最快只需要两个时钟周期。 3、每个IO都可以做中断。 4、支持8种工作模式。 1、3 GPIO电气特性 STM32工作电压范围:2~3…

【C进阶】通讯录的实现(静态+动态)

目录 前言: 一.静态通讯录的实现 1.关于通讯录的前期准备 (1)菜单的打印 (2)建立一个联系人的信息 (3)通讯录整体 (4)宏定义常量 (5)主函数菜单选项的功能 2.通讯录的功能实现 (1)初始化通讯录 (2)增加指定联系人 (3) 展示通讯录 "FindByName函数" (4)删…