-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathZXD_data_process.m
93 lines (84 loc) · 2.42 KB
/
ZXD_data_process.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
csi_trace = read_bf_file('data/test/csi_a10_1.dat');
%csi_entry = csi_trace{1}
%csi = get_scaled_csi(csi_entry)
%shi = db(abs(squeeze(csi).'))
m = size(csi_trace, 1); % 得出一个dat文件的包的数量
dataSet = zeros(m, 3) ; % 创建 一个可以容纳 包数量的矩阵 问题:一个包一行?
coss = [];
for k=1:200
t = get_scaled_csi(csi_trace{k}) ;
t = db(abs(squeeze(t).')) ;
dataSet(k,:) = mean(t) ; % 解决上述问题: 对30个数据取了平均值
coss = [coss;mean(t)];
end
%coss = guassian_flitering(coss);
clf;
hold on ;
%plot(dataSet(:,1),'r') ;
%plot(dataSet(:,2),'g') ;
%plot(dataSet(:,3),'b') ;
figure(1)
plot(coss(:,1),'r');
plot(coss(:,2),'g');
plot(coss(:,3),'b');
xlabel('time(s)');
ylabel('CSI(db)');
title('CSI原始信号') ;
legend('MIMO1', 'MIMO2', 'MIMO3') ;
hold off ;
hold on ;
figure(2)
coss = time_flitering(coss);
plot(coss(:,1),'r');
plot(coss(:,2),'g');
plot(coss(:,3),'b');
xlabel('time(s)');
ylabel('CSI(db)');
title('过滤后波形') ;
legend('MIMO1', 'MIMO2', 'MIMO3') ;
hold off ;
cossc = coss == -Inf;
coss(cossc) = 0;
[coeff,score,latent] = pca(coss);
hold on ;
figure(3)
plot(score)
title('PAC') ;
hold off ;
% plot(shi)
% legend('RX Antenna A', 'RX Antenna B', 'RX Antenna C', 'Location', 'SouthEast' )
% xlabel('Subcarrier index')
% ylabel('SNR [dB]')
% SNR = db(get_eff_SNRs(csi), 'pow')
function flitered_data = guassian_flitering(dataSet)
% flitering dataSet use guassian method
% input : dataSet - m*3 matrix for data
% output : flitered_data - dataSet flierted
% -----------------------------------------------------------------------
flitered_data = dataSet ;
h = fspecial('gaussian', 100, 20) ;
for type=1:3
flitered_data(:,type) = filter2(h, dataSet(:,type))*20;
end
end
function flitered_data = time_flitering(dataSet)
% flitering dataSet use time histroical factor
% input : dataSet - m*3 matrix for data
% output : flitered_data - dataSet flierted
% -----------------------------------------------------------------------
w = 100 ; % histroical param
m = size(dataSet, 1) ;
t = dataSet ;
for type = 1:3
for p=w:m
sum_mol = 0 ; % Molecular
sum_den = 0 ; % Denominator
for q=w:-1:1
sum_mol = sum_mol + q*dataSet(p-(w-q),type) ;
sum_den = sum_den + q ;
end
t(p,type) = sum_mol/sum_den ;
end
end
flitered_data = t ;
end