基于Wi-Fi CSI的摔倒检测(五):CSI数据处理-相位校准

技术凯 2021-01-08 11:33:04 25597
1 为什么需要校准相位

  基于商用WiFi设备获取到的相位信息可靠性不是很高,准确率也不能达到要求。但是相位信息又很能反映环境的变化。所以我们必须将这些由于硬件上的缺陷以及在传输过程中因环境噪声的影响引起的误差进行校准和补偿。这些误差主要是由三个方面组成:采样频率的偏移,检测时延,中心频率偏移。发射端和接收端之间的载波频率无法做到完全同步。

2 相位校准主要步骤:

  我们假设这些相位偏差都是线性的,所以我们引入一种线性变化对原始随机相位进行处理。


3具体实现以及效果

原始混杂相位:

解卷绕之后的相位:

线性变换之后的相位:

校准后各个子载波相位随着时间的变化:
第一子载波:

第三子载波:

第七子载波:

第九子载波:

第十三子载波:

第十七子载波:

第二十子载波:

第二十九子载波:

第二十三子载波:

第二十五子载波:

  根据以上对比结果我们可以发现,相同时间下不同子载波的相位对于环境信息的感知是不同的,所以我们后续还要进行相位的PCA 或者制定子载波相位选择的可靠策略。
本节整体代码如下:

clear all
clc;
warning off;
csi_trace = read_bf_file('sample_data/logfallr111.dat');
data_size=length(csi_trace);
% Hcsi=[];
k=[-28:2:-2,-1,1:2:27,28];%30
sub_phase=zeros(990,1);
all=zeros(1,990);
selsub=zeros(9,990);
m=15;
for i=100:790
    csi_entry = csi_trace{i};%依次读各组数据包,为了平均
    %  rssi(i)=get_total_rss(csi_entry);
    csi = get_scaled_csi(csi_entry);
%     csi=csi(1,:,:);
    csi1=squeeze(csi).';

    csiabs=db(abs(squeeze(csi).'));%%判断该矩阵维数size(),中最小值是否为1,不是得话要选择一组作为有效值
    if(min(size(csiabs))>1)
        %         maxValue=max(max(csiabs));
        %         [line,colunm]=find(csiabs==maxValue);
        %         csiabs=csiabs(:,colunm(1));
        %         csi1=csi1(:,colunm(1));
        csiabs=csiabs(:,1);
        csi1=csi1(:,1);
    else
        csiabs=csiabs';
        csi1=csi1';
    end

    phrad_measure=angle(csi1);%rad
%     figure(1)
%     plot( phrad_measure)
%      xlabel('subcarriers');
%         ylabel('Phase (rad)');
%         title('未解卷绕原始相位');
%     hold on 
    phrad_measure_m(i)=phrad_measure(m);%24子载波原始相位
     % plot(phrad_measure10,'g')
%    hold on
     % phdeg=rad2deg(phrad);%phdeg=180*phrad/pi;
    phrad_true=unwrap(phrad_measure);
%     figure(2)
%   plot(phrad_true)
%    xlabel('subcarriers');
%         ylabel('Phase (rad)');
%         title('解卷绕原始相位');
%     hold on 
%   hold on
    for t=1:30
        afterTransph(t)=phrad_true(t)-(phrad_true(30)-phrad_true(1))/56*k(t)-1/30*sum(phrad_true);%linear transformation
    end

    subphd(i)=afterTransph(m);%m子载波线性变换后相位
    selsub(1,i)=afterTransph(1);
    selsub(2,i)=afterTransph(5);
    selsub(3,i)=afterTransph(7);
    selsub(4,i)=afterTransph(9);
    selsub(5,i)=afterTransph(13);
     selsub(6,i)=afterTransph(17);
      selsub(7,i)=afterTransph(20);
       selsub(8,i)=afterTransph(23);
        selsub(9,i)=afterTransph(25);

        figure(3)
       plot(afterTransph);
       hold on
        xlabel('subcarrier');
        ylabel('Phase (rad)');
        title('linear transformation');
end
      figure(4)
      plot(subphd);
      hold on
       xlabel('time');
        ylabel('Phase (rad)');
        title('linear transformation');

       lz=wden(selsub(3,:),'heursure','s','one',3,'sym3');
       selsub(3,:)=lz;
       figure(5);
       di=wden(diff(subphd),'heursure','s','one',4,'db5');
       plot(di);
       xlabel('time');
        ylabel('Phase (rad)');
        title('phase_diff_afterfilter');
        for j=1:9
            figure(j+9)
         plot(selsub(j,:));
      hold on
       xlabel('sub(j)');
        ylabel('Phase (rad)');
        title('chosed_subcarrier(j)');
        all=all+selsub(j,:);
        end

        figure(31)
         plot(all);
       xlabel('time');
        ylabel('Phase (rad)');
        title('sum-chosedsub');
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 98 15 评论 打赏
评论
3个
内容存在敏感词
手气红包
  • 翼醴(醉笑芙蓉浅) 2024-03-26 19:48:51
    回复
    请问可以加个联系方式吗,想向您请教几个问题
  • 田田 2024-01-24 15:14:54
    回复
    基于Wi-Fi CSI的摔倒检测(六)呢?求更新
  • Alson🍊 2021-02-27 18:20:02
    回复

    大神你好,我在看你的文章做复现,但发现文章标题和内容好像存在顺序和重复问题,我重新排了个序,不知道这样理解对不对:
    1.CSI数据的导入
    2.CSI数据预处理-Hampel异常值滤波器
    3.CSI数据预处理-离散小波变换
    4.CSI 数据降噪-巴特沃斯滤波器
    5.CSI数据处理-相位校准
    6.CSI数据处理-PCA降维

相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
技术凯
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区