自己在做毕设的时候,发现网上很少有关于蓝牙定位过程中对rssi滤波处理的matlab代码,要不就是收费(誓死不花一分钱)要不就是对于图像处理的一系列滤波算法,所以小陈把自己写的滤波算法分享出来,希望能够对做同样定位的研友们有所帮助!
滑动平均滤波(详细算法自行搜索哦)
function res = MovingAverage(input,N)
%% input为平滑前序列(列向量和行向量均可);N为平滑点数(奇数);res返回平滑后的序列(默认行向量)。
sz = max(size(input));
n = (N-1)/2;
res = [];
for i = 1:length(input)
if i <= n
res(i) = sum(input(1:2*i-1))/(2*i-1);
elseif i < length(input)-n+1
res(i) = sum(input(i-n:i+n))/(2*n+1);
else
temp = length(input)-i+1;
res(i) = sum(input(end-(2*temp-1)+1:end))/(2*temp-1);
end
end
end
卡尔曼滤波
% kalman_filter.m
%获取传过来的RSSI值
function X = kalman_filter(data,Q,R,x0,P0)
N = length(data);
K = zeros(N,1);
X = zeros(N,1);
P = zeros(N,1);
X(1) = x0;
P(1) = P0;
for i &#