基于Matlab实现RFID阅读器与标签间通信数据分析

RFID阅读器与标签间通信数据分析

RFID系统由阅读器和标签组成,阅读器通过无线方式向标签发送读取命令,标签在接收到阅读器的命令后,会通过无线信号向阅读器回传EPC码,阅读器通过天线(Antenna)在接收到EPC码同时,还能够接收到三个无线通信参数:信号强度RSSI、相位角Phase、多谱勒Doppler。数据测试场景如下图所示,测试得到的数据存放在附件EXCEL文件 “ZWSJ” 中,表中 “辐射方向线” 为图中从天线 (Antenna)出来辐射线编号,表中“径向距离”为某编号的方向上标签与天线 (Antenna) 间的距离,表中 “标签平面方向” 编号分别表示标签平面和天线平面夹角的三种情况。

(1)统计径向距离为10cm,标签平面方向为其平面垂直于天线平面时RSSI平均值、方差。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%导入数据
ZWSJ=xlsread('ZWSJ.xlsx');
A=xlsread('ZWSJ.xlsx','A4:A3481');
B=xlsread('ZWSJ.xlsx','B4:B3481');
C=xlsread('ZWSJ.xlsx','C4:C3481');
D=xlsread('ZWSJ.xlsx','D4:D3481');
E=xlsread('ZWSJ.xlsx','E4:E3481');
F=xlsread('ZWSJ.xlsx','F4:F3481');
%调用工作区的变量
A_data=evalin('base','A');
B_data=evalin('base','B');
C_data=evalin('base','C');
D_data=evalin('base','D');
E_data=evalin('base','E');
F_data=evalin('base','F');
%求RSSI平均值、方差
X_10=find(B_data==10&C_data==1);
RSSI=E_data(X_10);
R_mean=mean(RSSI)
R_var=var(RSSI)

(2)分析径向距离为20cm,标签平面方向为其平面平行于天线平面时Phase与RSSI间相关系数。

1
2
3
4
5
%Phase与RSSI间相关系数
X_20=find(B_data==20&C_data==3);
phase=F_data(X_20);
RSSI_1=E_data(X_20);
r=corrcoef(phase,RSSI_1)

(3)分析径向距离为30cm,标签平面方向为其平面与天线平面夹角45度时Phase与dopper间相关系数。

1
2
3
4
5
%Phase与dopper间相关系数
X_30=find(B_data==30&C_data==2);
phase_1=F_data(X_30);
dopper=D_data(X_30);
r_1=corrcoef(phase_1,dopper)

(4)在辐射方向线10,以径向距离、标签平面方向和RSSI作三维曲面。

1
2
3
4
5
6
7
8
9
10
11
12
%以径向距离、标签平面方向和RSSI作三维曲面
f_10=find(A_data==10);
x=B_data(f_10);
y=C_data(f_10);
z=E_data(f_10);
[X,Y,Z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');
%绘图
figure,surf(X,Y,Z)
title('三维曲面');
xlabel('X(径向距离)');
ylabel('Y(标签平面方向)');
zlabel('Z(RSSI)');

(5)在辐射方向线10,由于丢失径向距离为290且标签平面方向为其平面与天线平面夹角45度时的RSSI数据,采用两种方式补充该数据:通过插值方式补充该数据;通过曲线拟合方式补充该数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%插值方式补充数据
index=find(B_data==290&C_data==2);
a_line=A_data(index);
rssi=E_data(index);
%线性插值
intp1=interp1(a_line,rssi,10)
%最近点插值
intp2=interp1(a_line,rssi,10,'nearest')
%分段3次埃尔米特插值
intp3=interp1(a_line,rssi,10,'pchip')
%3次样条插值
intp4=interp1(a_line,rssi,10,'spline')
%曲线插值
P=polyfit(a_line,rssi,3);
result=polyval(P,10)

尾巴