CSI_TOOL_BOX部分
csi_get_all.m
function [cfr_array, timestamp] = csi_get_all(filename)
csi_trace = read_bf_file(filename);
...
csi_all = squeeze(get_scaled_csi(csi_entry)).';
...
csi = [csi_all(:,1); csi_all(:,2); csi_all(:, 3)].';
...
cfr_array(k,:) = csi;
end
-
读取文件中的CSI数据,并将结果存储在csi_trace变量中。
-
调用get_scaled_csi函数,将csi_entry作为参数传递,并将返回的标准化CSI数据存储在csi_all中。
-
从csi_all中选择一个天线对应的CSI数据,并将其展开成一个行向量csi。
-
将csi存储在cfr_array的第k行中,用于构建频率响应矩阵。
read_bf_file.m文件
输出

-
输出结果和初次csi matlab复现时结果相同
-
1 * 3 * 30 的数据
-
(:,perm(1:Nrx),:)表示对 CSI 数据进行切片操作
ret{count}.csi(:,1:Nrx,:)表示以原始天线顺序为基准的 CSI 数据。
ret{
count}.csi(:,perm(1:Nrx),:) = ret{
count}.csi(:,1:Nrx,:);
read_bfee.c
在 MATLAB 中,可以通过 MEX 文件来调用使用 C 语言编写的函数。MEX 文件是一种特殊的 MATLAB 可执行文件,允许 MATLAB 与底层的 C 或 C++ 代码进行交互。通过 MEX 文件,您可以将 C 语言代码编译成 MATLAB 可识别的二进制文件,从而在 MATLAB 环境中调用 C 函数。
使用 MATLAB 提供的 MEX 工具(mex 命令)将 C 函数编译成 MEX 文件。 这将生成一个 MATLAB 可执行文件,用于在 MATLAB 中调用 C 函数。
disp
- 控制台输出
BVP部分
generate_vs.m
调用DVM_main.m
DVM_main.m
用于生成多普勒频谱(Doppler Spectrum)并进行速度映射。
- 通过调用
get_doppler_spectrum函数生成多普勒频谱,并存储在doppler_spectrum变量中。 - 对多普勒频谱进行速度映射处理,将多普勒频谱映射到速度空间。
- 对不同的频率段进行处理,将多普勒频谱映射到速度谱,并进行优化处理。
- 在循环中,对每个频率段进行优化处理,并将处理后的速度谱保存到文件中。
[doppler_spectrum, freq_bin] = get_doppler_spectrum([dpth_ges, spfx_ges],... rx_cnt, rx_acnt, 'stft');
spfx_ges 作为文件名参数,传递到DVM_main中
38-53
for kk = 1:6
figure;
colormap(jet);
% 使用 mesh 函数绘制三维图形,横轴为 1 到多普勒谱的第三维度大小,纵轴为 -60 到 60,数据为第 kk 个维度的多普勒谱挤压结果
mesh(1:size(doppler_spectrum,3),-60:60,squeeze(doppler_spectrum(kk,:,:)));view([0,90]);
xlim([0,size(doppler_spectrum,3)]);ylim([-

本文详细描述了在MATLAB中如何通过MEX文件调用C语言实现CSI数据读取和处理,包括get_scaled_csi函数、多普勒频谱生成与速度映射,以及使用fmincon进行非线性优化。同时介绍了DVM_main函数中涉及的关键信号处理技术,如PCA降维和时频分析(连续小波变换与短时傅里叶变换)。
最低0.47元/天 解锁文章
3732

被折叠的 条评论
为什么被折叠?



