CSI数据预处理之卡尔曼滤波、高斯滤波、简单平均

简介: CSI数据预处理之卡尔曼滤波、高斯滤波、简单平均

一、前言

由于WiFi信号强度受多径效应和噪声的影响会导致定位精度低和性能不稳定等的问题。与RSSI相比,信道状态信息(channel status information,CSI)能有效避免多径效应给定位结果带来的不良影响,因此,采用CSI的值作为定位的特征值,建立Radio Map的位置指纹数据库,通过加权邻近算法匹配k组最近的指纹库数据可以估计出待测点的位置。

a76830916620af271d8e75a78949a51d_b7742026b51b438fbdaa3560f83c9923.png

二、数据采集

这个阶段不做过多说明,怎么样采集及读取采集的csi数据也是一个难点。基于信道状态信息(channel status information,CSI)的室内定位法,其采用了正交频分复用(Orthogonal Frequency Division Multiplexing,OFDM)技术将通信信道分为多个不同频率的独立子信道,在每个子信道物理层收集CSI值作为指纹测量值。本文利用了配备Intel5300NIC网卡的台式机进行实验,设置若干个样本点,每个样本点采集若干个数据包,每个数据包有2*3*30条数据(2个发送天线,3个接收天线)。

三、卡尔曼滤波算法

1、什么是卡尔曼算法

卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。卡尔曼滤波算法在估计值和观测值之间做了一个修正。


2、卡尔曼的大致实现过程

卡尔曼的实现过程:使用上一次的最优结果预测当前的值,同时使用观测值修正当前值,得到最优结果。


3、卡尔曼滤波算法的核心计算式

本文就是根据以下公式,利用MATLAB进行数据处理

18213baea370d80690f724d5f011e26c_9994a4e1a5fc42169f2a0d3d9565db08.png

4、进行数据处理

每个点位采集的CSI数据有2*3*30*1500个幅度信息,我们采用第一根发射天线第一根接收天线的1500个单维幅度值进行卡尔曼滤波,MATLAB代码如下:

close all
clc
r1=xlsread('1.xlsx',1,'A1:A1500' ); %读取采集的csi值
csi_length = length(r1);%获取数据的长度
Z=r1; %获取观测量 
A=1; %状态转移矩阵
X(1)=15; %目标状态向量
H=1; %观测矩阵
P(1)=100;   %第一步预测的状态协方差矩阵
R=10e-4; %观测噪声方差
Q=10e-4; %噪声协方差
%有些变量会随迭代次数发生改变,所以给这些变量预先分配内存
X_=zeros(1,csi_length);
P_=zeros(1,csi_length);
K=zeros(1,csi_length);
 for t=2:csi_length
   %预测
    X_(t)=A*X(t-1);   %状态方程
    P_(t)=A*P(t-1)*A'+Q; %预测的协方差
    %更新校准
    K(t)=P_(t)*H'/(H*P_(t)*H'+R); %卡尔曼增益
    X(t)=X_(t)+K(t)*(Z(t)-H*X_(t)); %状态更新方程
    P(t)=(1-K(t)*H)*P_(t); %协方差更新方程
end
%绘图
x1=1:csi_length;
hold on
plot(x1,Z,'b-',x1,X,'r-');    % 红色线最优化估算结果滤波后的值,%蓝色线表示观测值
legend('观测值','滤波后的值','Location','northwest');
xlabel('数据包序列');ylabel('幅值(dB)');
title('卡尔曼滤波');
set(gca,'Ylim',[5,25]);
hold off

单维度卡尔曼滤波效果如下图:

四、高斯滤波

高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,我们可以利用高斯低通滤波算法对高频噪声进行处理。高斯滤波处理效果如下图所示:

五、简单平均

我们知道FIFS系统将多个天线上测得的幅值简单平均得到指纹,所以我们也可以使用这种方法去进行数据预处理。

创作不易,尊重原创,因为存在博主直接剽窃,所以很多文章进行了删减,希望大家谅解。



相关文章
|
机器学习/深度学习 Linux vr&ar
ARIMA差分自回归移动平均模型
ARIMA是**差分自回归移动平均模型**的引文缩写,其中AR表示的是自回归模型,MA表示的是移动平均模型,I表示的是差分。一般写成ARIMA(p,d,q),p是自回归阶数,q是移动平均阶数,d表示差分的次数。
1309 0
ARIMA差分自回归移动平均模型
|
数据处理
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
336 0
数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化
|
2月前
|
机器学习/深度学习 数据可视化
FredNormer: 非平稳时间序列预测的频域正则化方法
FredNormer是一种创新的频域正则化方法,旨在提高时间序列预测模型处理非平稳数据的能力。现有正则化技术虽在分布偏移上有所成效,但在频域动态模式捕捉方面存在不足。FredNormer通过自适应增强关键频率分量的权重,解决了这一问题,并设计了即插即用模块,便于集成到各类预测模型中。实验表明,FredNormer在多个公共数据集上显著提升了预测精度,特别是在复杂频率特征的数据集上效果显著。此外,其计算效率也优于现有方法。该方法为非平稳时间序列预测提供了有力工具。
60 3
FredNormer: 非平稳时间序列预测的频域正则化方法
|
7月前
时间序列分析实战(二):时序的ARMA模型拟合与预测
时间序列分析实战(二):时序的ARMA模型拟合与预测
|
7月前
|
机器学习/深度学习 算法 定位技术
Python用Lstm神经网络、离散小波转换DWT降噪对中压电网电压时间序列预测
Python用Lstm神经网络、离散小波转换DWT降噪对中压电网电压时间序列预测
|
7月前
|
机器学习/深度学习 数据可视化 Linux
ARIMA模型预测CO2浓度时间序列-python实现
ARIMA模型预测CO2浓度时间序列-python实现
|
7月前
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
|
7月前
|
Perl
R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等
R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等
|
7月前
|
算法 数据挖掘 C#
C# | 线性回归算法的实现,只需采集少量数据点,即可拟合整个数据集
什么是线性回归呢? 简单来说,线性回归是一种用于建立两个变量之间线性关系的统计方法。在我们的软件开发中,线性回归可以应用于数据分析、预测和优化等领域。 什么情况下会用到线性回归呢? 线性回归可以用于探索数据之间的关系,可以用于预测未来的趋势。通过少量的数据点就能得到一个可以代表整个数据集的模型。换句话说,只需要采集少量的数据点,就可以拟合出整个数据集。
279 0
|
机器学习/深度学习 传感器 编解码
【图像重建】基于小波变换图像分解重建(PSNR对比)附matlab代码
【图像重建】基于小波变换图像分解重建(PSNR对比)附matlab代码