1% Xianjun Jiao. [email protected]; [email protected] 2 3function timestamp = test_side_info_file_display(num_eq, side_info_filename, idx_to_check) 4close all; 5 6if exist('num_eq', 'var')==0 || isempty(num_eq) 7 num_eq = 8; 8end 9 10if exist('side_info_filename', 'var')==0 || isempty(side_info_filename) 11 side_info_filename = 'side_info.txt'; 12end 13 14if exist('idx_to_check', 'var')==0 || isempty(idx_to_check) 15 idx_to_check = 1; 16end 17 18a = load(side_info_filename); 19len_a = floor(length(a)/4)*4; 20a = a(1:len_a); 21 22b = reshape(a, [4, length(a)/4])'; 23num_data_in_each_side_info = 2+56+num_eq*52; 24num_side_info = floor(size(b,1)/num_data_in_each_side_info); 25 26side_info = zeros(num_data_in_each_side_info, num_side_info); 27timestamp = uint64(zeros(1, num_side_info)); 28freq_offset = zeros(1, num_side_info); 29csi = zeros(56, num_side_info); 30equalizer = zeros(num_eq*52, num_side_info); 31 32b = uint16(b); 33for i=1:num_side_info 34 sp = (i-1)*num_data_in_each_side_info + 1; 35 ep = i*num_data_in_each_side_info; 36 timestamp(i) = uint64(b(sp,1)) + (2^16)*uint64(b(sp,2)) + (2^32)*uint64(b(sp,3)) + (2^48)*uint64(b(sp,4)); 37 freq_offset(i) = (20e6*double(typecast(b(sp+1,1),'int16'))/512)/(2*pi); 38 side_info(:,i) = double(typecast(b(sp:ep,1),'int16')) + 1i.*double(typecast(b(sp:ep,2),'int16')); 39 csi(:,i) = side_info(3:58,i); 40 equalizer(:,i) = side_info(59:end,i); 41end 42 43csi = [csi(29:end,:); csi(1:28,:)]; 44equalizer = equalizer(:); 45equalizer(equalizer == 32767+1i*32767) = NaN; 46 47subplot(2,1,1); plot(abs(csi)); title('CSI'); ylabel('abs'); grid on; 48subplot(2,1,2); plot(angle(csi)); ylabel('phase'); xlabel('subcarrier'); grid on; 49 50if ~isempty(equalizer) 51 scatterplot(equalizer); grid on; 52end 53 54figure; plot(timestamp,'b+-'); title('time stamp (TSF value)'); ylabel('us'); xlabel('packet'); grid on; 55figure; plot(freq_offset); title('freq offset (Hz)'); ylabel('Hz'); xlabel('packet'); grid on; 56 57figure; 58subplot(2,1,1); plot(abs(csi(:,idx_to_check))); title('CSI'); ylabel('abs'); grid on; title(['Capture idx ' num2str(idx_to_check) ' timestamp ' num2str(timestamp(idx_to_check))]); 59subplot(2,1,2); plot(angle(csi(:,idx_to_check))); ylabel('phase'); xlabel('subcarrier'); grid on; 60