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表示差分的次数。
1102 0
ARIMA差分自回归移动平均模型
|
2月前
|
机器学习/深度学习 算法
基于VMD-SSA-LSTM的多维时序光伏功率预测
基于VMD-SSA-LSTM的多维时序光伏功率预测
|
2月前
|
机器学习/深度学习 算法 定位技术
Python用Lstm神经网络、离散小波转换DWT降噪对中压电网电压时间序列预测
Python用Lstm神经网络、离散小波转换DWT降噪对中压电网电压时间序列预测
|
2月前
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
|
2月前
|
编解码 人工智能 数据中心
1951-2011年长序列高时空分辨率月尺度温度和降水数据集
1951-2011年长序列高时空分辨率月尺度温度和降水数据集
43 1
|
机器学习/深度学习 传感器 编解码
【图像重建】基于小波变换图像分解重建(PSNR对比)附matlab代码
【图像重建】基于小波变换图像分解重建(PSNR对比)附matlab代码
|
算法 数据可视化 数据挖掘
基于GMM的一维时序数据平滑算法
本文将介绍我们使用高斯混合模型(GMM)算法作为一维数据的平滑和去噪算法。
158 0
|
12月前
【 PMU】信号生成、采样、分割、估计器应用和误差计算(Matlab代码实现)
【 PMU】信号生成、采样、分割、估计器应用和误差计算(Matlab代码实现)
|
机器学习/深度学习 传感器 算法
【图像重建】基于离散余弦变换DCT图像重建含MSE、PSNR、压缩比附matlab代码
【图像重建】基于离散余弦变换DCT图像重建含MSE、PSNR、压缩比附matlab代码
|
算法 索引
m基于PSO粒子群算法的重采样算法仿真,对比随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样
m基于PSO粒子群算法的重采样算法仿真,对比随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样
170 0
m基于PSO粒子群算法的重采样算法仿真,对比随机重采样,多项式重采样,分层重采样,系统重采样,残差重采样,MSV重采样