CSI Generator设计与实现

代码实现的Github地址: CSI_Generator

主要参考文献: SpotFi(SIGCOMM,2015)

CSI Generator

Steering Vector(导向向量)

由于Intel5300采用MIMO-OFDM调制方式,支持3天线,30个子载波的CSI提取,所以发射天线数为1,接收天线数为3时,CSI矩阵大小为3*30。对于一个子载波信号来说,CSI测量值向量(CSI矩阵的一列)其实就是多条路径的导向向量合成的导向向量矩阵*各路径复增益组成的向量

  • 每条路径拥有唯一的AoA和ToF,这两个参量唯一决定一条路径的导向向量
  • 每条路径贡献一份CSI,所有路径的CSI加一起就是CSI观测矩阵的的一列
  • 每一条路径上所有的子载波信号具有相同的AoA和ToF
  • 同一路径上不同子载波信号的复增益不同
  • 同一子载波不同路径的复增益不同

限定某一子载波频率条件下,由天线间距引起的CSI相移因子
![](http://latex.codecogs.com/gif.latex?
\begin{align}
\Phi(\theta_k) &= e{-j\times2\pi{f}\Delta{tof}{t}} = e{-j\times2\pi\frac{\Delta{dis} }{\lambda} } \
\Delta^{tof}
{t} &= \frac{\Delta^{dis}}{c} \
\Delta^{dis} &= d\times{sin(\theta_k)} \
{a(\theta_k)} &= \left[ \begin{array}{ccccc}
1 & \Phi(\theta_k) & \Phi(\theta_k)^2 & \cdots & \Phi(\theta_k)^{(M-1)}
\end{array} \right]^T
\end{align
}
)

k——第k条路径的接收信号
M——天线总数,此处M=3

限定某一接收天线条件下,由ToF引起的不同子载波CSI相移因子
为了仿真方便,假定30个子载波频率间隔相等,且关于中心频率对称。
![](http://latex.codecogs.com/gif.latex?
\begin{align}
\Omega(\tau_k) &= e^{-j\times{2\pi\Delta_f\tau_k}} \
\Delta_f &= BW/N \
{a(\tau_k)} &= \left[ \begin{array}{ccccc} 1 & \Omega(\tau_k) & \Omega(\tau_k)^2 & \cdots & \Omega(\tau_k)^{(N-1)} \end{array} \right]
\end{align
}
)

注意:实际上,Intel5300网卡采集CSI的子载波编号并不都是等间隔的,如20MHz带宽的index为27和28的子载波。但是40MHz的带宽采集的CSI的子载波编号是等间隔的,而且子载波的频率分布是关于中心频率处对称的。


CSI Generator设计与实现_第1张图片
image.png

** 综上,第k条路径的信号,从第i根天线接收的第j个子载波上的相位偏移(相对于第一根天线,第一个子载波的相位偏移)**
![](http://latex.codecogs.com/gif.latex?
\begin{align}
\Delta^{(i,j)}{\phi_k} &= \Phi(\theta_k){(i-1)}\Omega(\tau_k){(j-1)} \
{a(\theta,\tau)} &= \begin{bmatrix}
1 & \Omega
{\tau} & \cdots & \Omega_{\tau}^{N-1} \
\Phi_{\theta} & \Phi_{\theta}\Omega_{\tau} & \cdots & \Phi_{\theta}\Omega_{\tau}^{N-1} \
\vdots & \vdots & \ddots & \vdots \
\Phi_{\theta}^{M-1} & \Phi_{\theta}^{M-1}\Omega_{\tau} & \cdots & \Phi_{\theta}{M-1}\Omega_{\tau}{N-1} \
\end{bmatrix}_{M\times{N}} \
\end{align
}
)
其实,MIMO-OFDM的CSI可以看做是二维空时阵列的观测矩阵,类比二维空间阵列,二维面阵的DoA估计,另一维的DoA换成是ToF就可以了。

一条路径接收信号产生的CSI
![](http://latex.codecogs.com/gif.latex?
\begin{align}
CSI_k &= A_k\Gamma_k \
A_k &= a(\theta_k,\tau_k) = \begin{bmatrix}
1 & \Omega_{\tau} & \cdots & \Omega_{\tau}^{N-1} \
\Phi_{\theta} & \Phi_{\theta}\Omega_{\tau} & \cdots & \Phi_{\theta}\Omega_{\tau}^{N-1} \
\vdots & \vdots & \ddots & \vdots \
\Phi_{\theta}^{M-1} & \Phi_{\theta}^{M-1}\Omega_{\tau} & \cdots & \Phi_{\theta}{M-1}\Omega_{\tau}{N-1} \
\end{bmatrix}{M\times{N}} \
\Gamma_k &= \begin{bmatrix}
\gamma
{1}^k & \gamma_{1}^k & \cdots & \gamma_{1}^k \
\gamma_{2}^k & \gamma_{2}^k & \cdots & \gamma_{2}^k \
\vdots & \vdots & \ddots & \vdots \
\gamma_{N}^k & \gamma_{N}^k & \cdots & \gamma_{N}^k \
\end{bmatrix}_{N\times{N}}
\end{align
}
)
此处, M = 3, N = 30

多条路径接收信号产生的CSI
![](http://latex.codecogs.com/gif.latex?
\begin{align}
\widetilde{CSI} &= AF \
A &= \begin{bmatrix}
a(\theta_1,\tau_1) & a(\theta_2,\tau_2) & \cdots & a(\theta_L,\tau_L)
\end{bmatrix}{M \times N \times L} \
F &= \begin{bmatrix}
\Gamma_1 & \Gamma_2 & \cdots & \Gamma_L
\end{bmatrix}^T
{L \times N \times N} \
\widetilde{CSI} &= \sum_{k = 1}^{L}CSI_k + n_{csi} \
n_{csi} & \sim N(0,\sigma_{csi}^2)
\end{align
}
)
从CSI的观测矩阵公式,可以看出** CSI矩阵的每一个元素都是L条路径信号的和 **

仿真实验表明,多径的AoA和ToF估计与衰减因子gamma(复常数)无关,可以随机取值。

用原始MUSIC算法联合估计AoA和ToF效果图

** 归一化AoA-ToF MUSIC伪谱 **


CSI Generator设计与实现_第2张图片
MUSIC_AoA_ToF.jpg

** AoA-伪谱投影图 **

CSI Generator设计与实现_第3张图片
MUSIC_AoA.jpg

** ToF-伪谱投影图 **

CSI Generator设计与实现_第4张图片
MUSIC_ToF.jpg

使用的参数如下,

c = 3e8;                            % 光速 3*10^8 [m/s]
fc = 5.8e9;                         % 5.8GHz
lambda = c/fc;                      % 载波波长

%% 阵列参数
alpha = 2;
Nrx = floor(paths*alpha);           % 接收阵元个数(天线个数) 至少为paths+1
ant_dist = lambda/2;                % space = lambda/2 [m]

%% 多径参数
paths = length(theta);              % number of DOA
theta = [-40 10 30];                % 各径AoA[deg]
tau = [73 18 43]*1e-9;              % 各径ToA[ns]

%% 信号参数
Nc = 30;                            % number of subcarriers 至少为2
Delta_f = BW/Nc;                    % 子载波频率间隔
BW = 20e6;                          % Bandwidth = 20MHz

SNR = 10;                           % input SNR (dB) 10dB 代表信号功率是噪声功率的10倍,10lg10
samples = 500;                      % 快拍数 500

CSI Smoothing(未完待续)

**更多讨论: **

  • QQ群:CSI信道状态信息交流群 3661022075
  • Github: https://github.com/wuzhiguocarter/Awesome-WiFi-CSI-Research

你可能感兴趣的:(CSI Generator设计与实现)