【MATLAB】基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据(附代码)

文章介绍了利用射线跟踪技术和对数路径损耗模型在MATLAB中仿真Wi-Fi信号强度(RSSI)的过程,以支持室内定位的研究。实验包括生成高精度的WiFi指纹库,以及离线和在线数据采集方法。
摘要由CSDN通过智能技术生成

基于Wi-Fi指纹匹配的室内定位-仿真获取WiFi RSSI数据

WiFi指纹匹配是室内定位最为基础和常见的研究,但是WiFi指纹的采集可以称得上是labor-intensive和time-consuming。现在,给大家分享一下我们课题组之前在做WiFi指纹定位时的基于射线跟踪技术仿真WiFi RSSI实验代码。

对数路径损耗模型

WiFi信号强度在空间中传播符合路径损耗模型。本文介绍的是较为常用的对数路径损耗模型,如下公式:
在这里插入图片描述
RSS衰减与距离的对数呈正比,假设已知一个参考距离d0以及这个距离上的RSS为
RSS(d0),那么距离为d的RSS(d)就可以通过上式计算得到。n是环境因子,在自由空间中一般取2就可以。
下图是实际RSS和模型仿真RSS的比较。在实际环境中,因为受到多径效应、非视距传播等噪声的影响,信号强度会发生变化,所以实际测量到的Wi-Fi信号一般如红线所示。

在这里插入图片描述

利用射线跟踪技术仿真得到Wi-Fi的RSSI数据

Wi-Fi信号沿直线传播,可以将其近似为射线进行分析。对于一个固定的发射源(即WiFi AP),在自由空间中,利用对数距离衰减模型即可计算各个位置的RSS,但是室内环境很复杂,信号可以遇到墙壁发生反射,各个反射后的信号又可以与未经反射的信号叠加,实际中测量到的信号其实包括了各个反射、绕射、散射信号。在射线跟踪中,计算出发射点与接收点之间的多条传播路径,分别对各个路径的信号进行分析,一般包括信号强度、相位在多次反射或绕射下的计算,然后叠加得到接收点上的信号。
在仿真实验中,我们把每个Wi-Fi AP看成一个固定的发射源,而接收器则要接受来自不同Wi-Fi AP的信号。接收器收到的信号中包含了来自每个WiFi AP的1条直射路径与6条(墙壁)反射路径的信号,因为反射后信号很小,所以我们不考虑反射信号路径。根据对数路径损耗模型,我们理论上可以计算出室内每点的WiFi RSSI强度,用于室内定位指纹库建立。
如下图,是仿真得到的某WiFi AP所覆盖的WiFi信号强度。
在这里插入图片描述

仿真实验MATLAB代码

实际上在射线仿真实验中涉及到了通信原理的知识,但是因为我本人不是通信出身,所以不做具体说明,想要了解射线传播原理的同学自己搜索相关知识~
以下是主程序代码:

if ~exist('radio_map_20_15.mat', 'file') %生成仿真环境
    disp('正在模拟射线跟踪...');
    generate_radio_map(0.01);  % 仿真射线网格大小
end

clc
clear;
load radio_map_30_30.mat; 
%变量为fingerprint %默认尺寸为20m*15m * 10ap,网格大小为0.01m
%注意:这里的仿真环境(fingerprint)是一个精度很高的指纹库,后面从这个仿真环境中进行取样(采集数据)并生成用于定位的指纹库。

%% 获取离线指纹库
%如果要研究指纹库构建上的优化,在这部分改进
[offline_rss, offline_location] = get_offline_data_uniform(fingerprint,100); %均匀采样
offline_location=offline_location/100; 
idx=[1:1:length(offline_location)]';
offline_location=[offline_location,idx];
save('offline_data_uniform', 'offline_rss', 'offline_location');
[offline_rss, offline_location] = get_offline_data_random(fingerprint); %随机采样
offline_location=offline_location/100;
save('offline_data_random', 'offline_rss', 'offline_location');

%% 获取在线定位阶段的数据
%前面默认的数据集的密度是0.01m,这样的话整个仿真系统的位置最小分辨率为0.01m,trace总是0.01的整数倍
roomLength = 30;
roomWidth = 30;
t = 1000;
[ loc, rss ] = get_online_data( fingerprint, 1, roomLength, roomWidth, t ); %得到轨迹与对应的RSS
save('online_data', 'loc', 'rss');
%%
clear fingerprint;

本仿真实验的完整代码:仿真获取WiFi RSSI数据
WiFi指纹定位的项目代码:WiFi指纹定位

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
室内定位技术基于WiFi代码可以实现在室内环境中对用户的定位和导航功能。室内定位是指在建筑物内部,通过WiFi信号的分布和传播特性,利用WiFiRSSI(Received Signal Strength Indication)对用户进行定位RSSI是一种反映WiFi信号强弱的衡量指标,通过测量接收到的信号强度,可以判断用户相对于WiFi信号源的距离。 基于WiFi代码室内定位技术主要包括以下几个步骤。首先,需要对室内环境进行WiFi信号的扫描和采集,获取不同位置的RSSI数据。然后,通过算法对采集到的RSSI数据进行预处理和分析,可以得到用户与各个WiFi信号源的相对距离。接下来,根据用户与各个WiFi信号源的距离,结合楼层平面图或地理坐标系统,可以确定用户的室内位置。最后,利用用户位置信息,可以实现室内导航、搜索周围设施等功能,提供给用户定位服务。 室内定位技术基于WiFi代码的优点是成本相对较低,因为它可以利用已有的WiFi网络设施,无需额外的硬件设备。此外,WiFi信号在室内覆盖范围广,室内定位精度较高,可以满足大部分室内定位场景的需求。然而,基于WiFi代码室内定位技术也存在一些不足之处,如对于大型复杂建筑物的定位精度可能不够准确,或在高噪声环境下可能受到干扰。 综上所述,基于WiFi代码室内定位技术可以通过分析WiFi信号的强度来实现用户的定位和导航功能,具有较低的成本和较高的精度,但也存在一些限制和挑战。随着技术的不断发展,室内定位技术将会越来越成熟和普及,为用户提供更好的室内定位服务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值