如何使用MatLab对CSI的相位进行矫正

简介: 如何使用MatLab对CSI的相位进行矫正

一、前言

目前大部分基于CSI的无线被动定位方案都只使用CSI的幅值响应信息,忽略了CSI的相位响应信息,因为其原始相位响应信息中含有很大的随机噪声和相位误差。然而,有文献表明,经过校准后的CSI相位对目标位置的变化更为敏感,所以对CSI相位的处理便尤为重要。由于采集到的CSI样本信号,在传输的过程中会受到周围环境的噪声干扰,同时由于硬件限制等原因会产生相位偏移,可以采用一种简单而有效的线性拟合的方法进行相位,消除由于残余的载波频率误差及时钟同步误差造成的相位偏移,以此来获得CSI的真实相位。

二、操作步骤

1、处理的大致过程

原始相位→解卷绕→线性变换→校正后的相位(真实相位)

注:由于CSI的相位存在循环性,提取出的CSI相位是折叠的,因此需要先对CSI相位进行解卷绕,得到解卷绕后的相位后,再对其进行线性变换处理。

2、解卷绕

MATLAB使用unwrap函数进行解卷绕,使相位在pi处不发生跳变,从而反应出真实的相位变化。实际在默认的情况下,unwrap在检查到数据前后两点的差距在超过π的时候,就认为有跳变,当然其阈值也能通过函数设置。

unwrap函数的完整格式:unwrap(pha,tol,dim);

pha可为数列或矩阵,tol为判断的阈值,dim参数可以设置对矩阵的行(1表示列,2表示行)。

a =[2.1415  -3.1415  2.5025  1.7062  1.0361  0.2504  -0.5363  -2.5515  2.9917  2.0832 1.3398];
a_=a';
b=unwrap(a_,pi,1);
hold on
plot(a_,'b-');
plot(b,'r-');
hold off 
c=[a_,b];
disp(c);

f3aea143348c2b4513890d997966665a_3833efa1271a40d5aebc7b8a0ec0d427.png

当2.1415与-3.1415之间超过阈值π后视为发生跳变,将-3.1415加上或减去2*pi,这里加上2π,得到3.1417,再用2.5025与3.1417相比,两者相差小于π,故不进行解卷绕,以此类推。

3、线性变换

(1)线性变换算法公式和大致步骤如下所示:

(2)下图为不同带宽的子载波索引序列,可按照自己的实际需求来选取,我这里选择的是20MHz的带宽对应的子载波索引序号。

4、MATLAB代码实现

%参数说明:H_表示原始相位,F表示解绕缠后的矩阵、H表示矫正后的相位
H_=xlsread('test1.xlsx',1,'A1:AD1');
F=unwrap(H_,pi,2); %F表示解卷绕后的矩阵,判断的阙值为pi,2表示对矩阵每一行进行相位矫正
m=[-28,-26,-24,-22,-20,-18,-16,-14,-12,-10,-8,-6,-4,-2,-1,1,3,5,7,9,11,13,15,17,19,21,23,25,27,28];
H_length=length(H_);
%预先分配好内存空间
H=zeros(1,H_length);
%线性变换   
sum=0;
  for t=1:30
     sum=sum+F(t);
  end
  b=(1/30)*sum;
  k=(F(30)-F(1))/(m(30)-m(1));
  for i=1:30  %子载波迭代
  H(i)=F(i)-k*m(i)-b; %H表示校正以后的相位,H_表示实际测量的相位,k表示斜率,b表示截距
    %res=squeeze(H);
  end
hold on
subplot(1,3,1); plot(m,H_,'r-');set(gca,'Xlim',[-30,30]);%原始相位图
title('原始的相位');xlabel('子载波索引');ylabel('相位');
subplot(1,3,2); plot(m,F,'k-');  %解卷绕后的相位图
set(gca,'Xlim',[-30,30]);set(gca,'Ylim',[-25,5]);
title('解卷绕之后的相位');xlabel('子载波索引');ylabel('真实测量的相位');
subplot(1,3,3); plot(m,H,'b-');  %真实相位图
set(gca,'Xlim',[-30,30]);set(gca,'Ylim',[-1,1]);
title('线性变换之后的相位');xlabel('子载波索引');ylabel('校准的相位');
hold off
% disp(H_);
% disp(F);
% disp(H);

三、实验结果

(1)可以看出处理前的相位毫无规律可言,处理后的相位集中分布,说明了线性变换的有效性。

(2)1500个数据包的1500*30个子载波的相位矫正结果如下图所示:

如有对室内定位之CSI指纹定位感兴趣的,可参考博主往期文章:室内定位之CSI指纹定位_数产小黑娃的博客-CSDN博客

创作不易,感谢支持,您的支持是我进步最大的动力!!!

目前已发现文章抄袭,甚至连变量都不改的,希望支持原创,抄袭文章链接:使用MATLAB进行CSI数据处理_一定要早睡早起呀的博客-CSDN博客

e9ffdb7cf5b111280f41f8d2f39e17ed_0977d5fe2e894727aa6edd0297031bc9.png



相关文章
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的QPSK调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的QPSK调制解调系统相位检测和补偿算法matlab仿真
106 2
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统相位检测和补偿算法matlab仿真
MATLAB 2022a仿真实现了基于深度学习的64QAM相位检测和补偿算法,有效应对通信中相位失真问题。通过DNN进行相位检测和补偿,降低解调错误。核心程序生成随机信号,模拟AWGN信道,比较了有无相位补偿的误码率,结果显示补偿能显著提升性能。
91 8
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的32QAM调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的32QAM调制解调系统相位检测和补偿算法matlab仿真
109 1
|
7月前
|
机器学习/深度学习 算法
m基于深度学习的16QAM调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的16QAM调制解调系统相位检测和补偿算法matlab仿真
75 0
|
7月前
|
算法 数据可视化 图计算
基于二维小波变换的散斑相位奇异构造算法matlab仿真
基于二维小波变换的散斑相位奇异构造算法matlab仿真
|
算法 定位技术
m基于多相位功率倒置的GPS抗干扰算法matlab仿真
m基于多相位功率倒置的GPS抗干扰算法matlab仿真
237 0
m基于多相位功率倒置的GPS抗干扰算法matlab仿真
|
人工智能 算法
基于物理层网络编码的相位同步算法matlab仿真
基于物理层网络编码的相位同步算法matlab仿真
|
机器学习/深度学习 传感器 算法
【光学】基于matlab模拟参考光栅和变形光栅折叠相位
【光学】基于matlab模拟参考光栅和变形光栅折叠相位
|
机器学习/深度学习 算法 自动驾驶
基于图像特征检测——使用相位拉伸变换(Matlab代码实现)
基于图像特征检测——使用相位拉伸变换(Matlab代码实现)
123 0
|
机器学习/深度学习 传感器 算法
【数字信号调制】基于matlab实现2PSK二进制数字相位调制
【数字信号调制】基于matlab实现2PSK二进制数字相位调制

热门文章

最新文章