├── README.md ├── spotFi ├── CDF.m ├── DATA.m ├── README.md ├── SMOOTH.m └── SPOTFI.m └── wicapture ├── CDF.m ├── Dcvx.m ├── MUSIC.m ├── README.md ├── RScvx.m ├── csitry.m ├── position_tracking.m ├── smooth.m └── wicapture.m /README.md: -------------------------------------------------------------------------------- 1 | this repository is simulation practices based on Manikanta Kotaru's two paper: 1."SpotFi: Decimeter Level Localization Using WiFi", SIGCOMM. London,United Kingdom, 2015 2."Position Tracking for Virtual RealityUsing CommodityWiFi," IEEE. Trans. Stanford University. US, CVPR,2017 by using simulation data and experimental data. 2 | 3 | While the Wicapture's simulation is based on spotFi's simulation, by using its MUSIC and smoothingCSI algorithms. 4 | -------------------------------------------------------------------------------- /spotFi/CDF.m: -------------------------------------------------------------------------------- 1 | daoa=abs(groundTruth(:,1)-aoaest(:,1)); 2 | [aaa]=Cdf(daoa); 3 | function [middle]=Cdf(x) 4 | %Cumulative Distribution Function (CDF 5 | n=length(x); 6 | [y,index]=sort(x); 7 | for i=1:n 8 | index(i)=i/n; 9 | end 10 | y=log(y)/log(10); 11 | plot(y,index,'b'); 12 | xlabel('lg(aoa)/degree'); 13 | ylabel('precent'); 14 | title('CDF'); 15 | middle=y(int32(n/2)); 16 | end -------------------------------------------------------------------------------- /spotFi/DATA.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonZ-c/IoT-WIFI-localization/4080e978845231114610a065a30b638d33c14ae4/spotFi/DATA.m -------------------------------------------------------------------------------- /spotFi/README.md: -------------------------------------------------------------------------------- 1 | # simulation of SpotFi 2 | this repository is simulation based on Manikanta Kotaru's paper: "SpotFi: Decimeter Level Localization Using WiFi", SIGCOMM. London,United Kingdom, 2015 3 | -------------------------------------------------------------------------------- /spotFi/SMOOTH.m: -------------------------------------------------------------------------------- 1 | N=1;U=1; 2 | sCSI=zeros(Nsub,Nsub+2,U,N); 3 | X=zeros(3,30); 4 | for i=1:3 5 | for j=1:Nsub 6 | X(i,j)=csis(1,1,i,j); 7 | end 8 | end 9 | for i=1:15 10 | for j=1:16 11 | sCSI(i,j)=X(1,i+j-1); 12 | sCSI(i+15,j)=X(2,i+j-1); 13 | sCSI(i,j+16)=X(2,i+j-1); 14 | sCSI(i+15,j+16)=X(3,i+j-1); 15 | end 16 | end 17 | X1=sCSI; 18 | 19 | length(csis(1,:,1,1)) -------------------------------------------------------------------------------- /spotFi/SPOTFI.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonZ-c/IoT-WIFI-localization/4080e978845231114610a065a30b638d33c14ae4/spotFi/SPOTFI.m -------------------------------------------------------------------------------- /wicapture/CDF.m: -------------------------------------------------------------------------------- 1 | % dposition=zeros(N,1); 2 | % for i=1:N 3 | % dposition(i,1)=sqrt((position1(i,1)-positionest(1,i))^2+(position1(i,2)-positionest(2,i))^2); 4 | % end 5 | dposition1=zeros(N,1); 6 | for i=1:N 7 | dposition1(i,1)=sqrt((position1(i,1)-positionest(1,i))^2+(position1(i,2)-positionest(2,i))^2); 8 | end 9 | [aaa]=Cdf(dposition,dposition1); 10 | % [aaa1]=Cdf(dposition1); 11 | 12 | function [middle]=Cdf(x,x1) 13 | % %Cumulative Distribution Function (CDF 14 | n=length(x); 15 | n1=length(x1); 16 | [y,index]=sort(x); 17 | [y1,index1]=sort(x1); 18 | for i=1:n 19 | index(i)=i/n; 20 | end 21 | y=log(100*y)/log(10); 22 | y1=log(100*y1)/log(10); 23 | % y=100*y; 24 | plot(y,index,'b'); 25 | hold on; 26 | plot(y1,index,'r'); 27 | xlabel('log(position error)/cm'); 28 | ylabel('precent'); 29 | title('CDF blue=fixed; red=without fixing'); 30 | middle=y(int32(n/2)); 31 | end -------------------------------------------------------------------------------- /wicapture/Dcvx.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonZ-c/IoT-WIFI-localization/4080e978845231114610a065a30b638d33c14ae4/wicapture/Dcvx.m -------------------------------------------------------------------------------- /wicapture/MUSIC.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonZ-c/IoT-WIFI-localization/4080e978845231114610a065a30b638d33c14ae4/wicapture/MUSIC.m -------------------------------------------------------------------------------- /wicapture/README.md: -------------------------------------------------------------------------------- 1 | this repository is simulation based on Manikanta Kotaru's paper: "Position Tracking for Virtual RealityUsing CommodityWiFi," IEEE. Trans. Stanford University. US, CVPR,2017 by using simulation data and experimental data 2 | -------------------------------------------------------------------------------- /wicapture/RScvx.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonZ-c/IoT-WIFI-localization/4080e978845231114610a065a30b638d33c14ae4/wicapture/RScvx.m -------------------------------------------------------------------------------- /wicapture/csitry.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonZ-c/IoT-WIFI-localization/4080e978845231114610a065a30b638d33c14ae4/wicapture/csitry.m -------------------------------------------------------------------------------- /wicapture/position_tracking.m: -------------------------------------------------------------------------------- 1 | DEBUG=1; 2 | % run csitry.m; 3 | % run wicapture.m; 4 | % run Dcvx.m 5 | % run RScvx.m; 6 | % N=2; 7 | 8 | %comparison of position results after optimization 9 | positionest=zeros(2,N);positionest(1,1)=x0;positionest(2,1)=y0; 10 | for index=1:8 11 | positionest(1,index+1)=positionest(1,index)+deltan(1,1,index); 12 | positionest(2,index+1)=positionest(2,index)+deltan(2,1,index); 13 | end 14 | % positionest(:,9)=position(9,:); 15 | for index=9:14 16 | positionest(1,index+1)=positionest(1,index)+deltan(1,1,index); 17 | positionest(2,index+1)=positionest(2,index)+deltan(2,1,index); 18 | end 19 | % positionest(:,15)=position(15,:); 20 | for index=15:N-1 21 | positionest(1,index+1)=positionest(1,index)+deltan(1,1,index); 22 | positionest(2,index+1)=positionest(2,index)+deltan(2,1,index); 23 | end 24 | position1=zeros(N,2); 25 | for i=1:N 26 | position1(i,1)=position(i,1); 27 | position1(i,2)=position(i,2); 28 | end 29 | 30 | plot(100*positionest(1,:),100*positionest(2,:),'-r*'); 31 | hold on; 32 | plot(100*position1(:,1),100*position1(:,2),'-b*'); 33 | xlabel(' x/cm'); 34 | ylabel('y/cm'); 35 | title('blue=real,red=est'); 36 | -------------------------------------------------------------------------------- /wicapture/smooth.m: -------------------------------------------------------------------------------- 1 | %for 9*30 csi to (4*15)*(4*16) 2 | %4*4*+(15*16) 3 | %for sub=30,t=3,r=3 only 4 | Nsmooth=1; 5 | [aaa]=csismooth(Haddtemp,U,1); 6 | function [sCSI]=csismooth(X,U,Nsmooth) 7 | %Npackets, UAPs 8 | sCSI=zeros(4*15,4*16,U,Nsmooth);%edit 9 | Nsub=30;%subcarriers 10 | for p=1:Nsmooth 11 | for u=1:U%edit 12 | for i=1:15 13 | for j=1:16 14 | for r=1:3 15 | for t=1:3 16 | switch r 17 | case{1}%block 1 18 | if t<=2 19 | sCSI(i,(t-1)*16+j,u,p)=X((r-1)*3+t,(p-1)*Nsub+i+j-1,u); 20 | else 21 | sCSI((t-2)*15+i,(t-2)*16+j,u,p)=X((r-1)*3+t,(p-1)*Nsub+i+j-1,u); 22 | end 23 | sCSI(15+i,j,u,p)=sCSI(i,16+j,u,p); 24 | case{2}%block 2 25 | if t<=2 26 | sCSI(i,(t-1)*16+j+32,u,p)=X((r-1)*3+t,(p-1)*Nsub+i+j-1,u); 27 | else 28 | sCSI((t-2)*15+i,(t-2)*16+j+32,u,p)=X((r-1)*3+t,(p-1)*Nsub+i+j-1,u); 29 | end 30 | sCSI(15+i,j+32,u,p)=sCSI(i,16+j+32,u,p); 31 | for ii=1:30%block 3 32 | for jj=1:32 33 | sCSI(ii+30,jj,u,p)=sCSI(ii,jj+32,u,p); 34 | end 35 | end 36 | case{3}%block 4 37 | if t<=2 38 | sCSI(30+i,(t-1)*16+j+32,u,p)=X((r-1)*3+t,(p-1)*Nsub+i+j-1,u); 39 | else 40 | sCSI(30+(t-2)*15+i,(t-2)*16+j+32,u,p)=X((r-1)*3+t,(p-1)*Nsub+i+j-1,u); 41 | end 42 | sCSI(30+15+i,j+32,u,p)=sCSI(i,16+j+32,u,p); 43 | end 44 | end 45 | end 46 | end 47 | end 48 | disp(u); 49 | end 50 | disp(p); 51 | end 52 | end -------------------------------------------------------------------------------- /wicapture/wicapture.m: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JasonZ-c/IoT-WIFI-localization/4080e978845231114610a065a30b638d33c14ae4/wicapture/wicapture.m --------------------------------------------------------------------------------