技术专栏
基于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 / 页
相关专栏
-
浏览量:11384次2021-01-08 03:03:13
-
浏览量:13649次2021-01-08 01:48:55
-
浏览量:14997次2020-12-21 18:20:26
-
浏览量:26194次2020-12-18 00:01:24
-
浏览量:16528次2020-12-21 18:30:47
-
浏览量:12313次2020-12-19 14:41:57
-
浏览量:4210次2021-08-02 09:33:43
-
浏览量:10768次2021-05-31 17:01:39
-
浏览量:7924次2021-01-08 01:26:48
-
浏览量:344次2023-04-22 19:23:24
-
浏览量:4210次2021-05-15 23:39:10
-
2023-01-13 11:33:00
-
浏览量:781次2023-02-17 11:37:20
-
浏览量:10378次2021-02-26 11:19:50
-
浏览量:3335次2021-09-08 09:30:45
-
浏览量:1321次2019-11-07 14:15:02
-
浏览量:10353次2021-05-12 12:35:30
-
浏览量:5672次2021-01-23 17:41:13
-
浏览量:3774次2021-02-04 16:47:25
我要创作
分享技术经验,可获取创作收益
切换马甲
上一页
下一页
打赏作者
技术凯
您的支持将鼓励我继续创作!
打赏金额:
¥1

¥5

¥10

¥50

¥100

支付方式:

举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
审核成功
发布时间设置
发布时间:
请选择发布时间设置
是否关联周任务-专栏模块
审核失败
失败原因
请选择失败原因
备注
请输入备注