基于Wi-Fi CSI的摔倒检测(五):CSI数据处理-相位校准
21886 打赏
技术凯 2021-01-08 11:33:04

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');
声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
评论
1个
时间排序
内容存在敏感词
    0 条记录 第 0 /
    相关专栏
    打赏作者
    易百纳技术社区
    技术凯
    您的支持将鼓励我继续创作!
    打赏金额:
    ¥1 易百纳技术社区
    ¥5 易百纳技术社区
    ¥10 易百纳技术社区
    ¥50 易百纳技术社区
    ¥100 易百纳技术社区
    支付方式:
    微信支付
    支付宝支付
    易百纳技术社区 微信支付
    易百纳技术社区
    打赏成功!

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

    举报反馈

    举报类型

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

    详细说明

    审核成功

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

    审核失败

    失败原因
    备注
    Loading...
    易百纳技术社区
    确定要删除此文章、专栏、评论吗?
    确定
    取消
    易百纳技术社区
    活动规则
    • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
    • 2.发布在平台的专栏需为原创技术专栏,且社区作为首次发布的平台,在其他平台发布需注明为转载
    • 3.周任务中的专栏需要达到一定质量才会被计入完成总数中。具体以平台审核为准,如有疑问,可联系社区客服(ebainacs)。
    • 4.专栏/资料的任务以审核通过的篇数为准,每个任务数量不做累计。
    • 5.任务完成后,现金奖励直接打款到微信账户EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换。
    易百纳技术社区
    升级提醒
    升级

    恭喜您的社区称号由 升级为 “社区游民”

    同时为了感谢您对社区的支持,我们将送出xxx礼品一份, 记得领取哦~

    升级提醒
    易百纳技术社区