【TI毫米波雷达入门-12】myreadDCA1000.m
2023-12-26 13:36:36
需求,读取dca1000的二进制文件,将数据转换成4行(rx0~rx3)实部+虚部的格式
1,先打开二进制文件,结合手册查看格式
如图可知,通过DCA1000得到的数据是按
RX0 实部1;
RX0 实部2;
RX0虚部1;
RX0 虚部2
RX0 实部3;
RX0 实部4;
RX0虚部3;
RX0 虚部4;
...............
RX0 实部N-1;
RX0 实部N
RX0虚部N-1;
RX0 虚部N;
(其中N表示每个chirp的采样个数,目前已知等于256)
RX1 实部1;
RX1 实部2;
RX1虚部1;
RX1 虚部2
RX1 实部3;
RX1 实部4;
RX1虚部3;
RX1 虚部4;
...............
RX1 实部N-1;
RX1 实部N
RX1虚部N-1;
RX1 虚部N;
...............
R2 的N次
R3 的N次
4*1次chirp 采样完成后,再进行一次这样的循环,合计M次。
2,从中得到几个基本参数
- 通过解析二进制的数据可以得出数据总数
- 总数/2 得到有效数字(/2的原因一半是虚部)
- 一个chirp采样数是256
- 一共有4个接收天线
- 总共的chirp数= 总数/2/4/256
定义好这些全局变量,共后面使用
3,新建一个行矩阵,将所有的二进制数据组合成实部+虚部的格式
4,新建一个4x总chirp数 的矩阵,用于组合存4个天线的M个chirps*256点数据
5,matlab程序代码
- 可以先编写测试代码,
- 测试代码验证通过后,封装成函数
function [retVal] = myreadDCA1000(fileName) %新建一个函数名为readDCA1000 的函数,输入fileName,输出retVal 表格
%%
%全局变量
SampleNumbers = 256; %一个chips 的采样点数
RxNum = 4; %4路接收
%ChirpNumbers = 0;%附上一个初始Chirps 默认是0
%dataNumbers= 0;% 有效数据个数
%%
%%
%读取原始数据
%fileID = fopen('matlab_lab_adc_data.bin','r');
fileID = fopen(fileName,'r');
data = fread(fileID, 'int16'); %in16显示
fclose(fileID);
dataNumbers = length(data)/2;
ChirpNumbers =dataNumbers/RxNum/SampleNumbers;
RxData = zeros(RxNum,dataNumbers/4);
lvdsData = zeros(dataNumbers,1);
%%
%将原始数据合并成实部+虚部
lvds_nums = 1;
for j = 1:4:length(data) -3
lvdsData(lvds_nums,1) = data(j,1) + sqrt(-1)*data(j+2,1);
lvdsData(lvds_nums+1,1) = data(j+1,1) + sqrt(-1)*data(j+3,1);
lvds_nums = lvds_nums +2 ;
end
lvds_nums = 1;
for i= 1:ChirpNumbers
for j = 1: RxNum
for k = (i-1)*256+1:(i-1)*256+256
RxData(j,k)= lvdsData(lvds_nums,1);
lvds_nums = lvds_nums+1;
end
end
end
retVal = RxData;
总结
1,先理解原始数据的存储格式,以及要获得的数据存储格式
2,算出一些已知项目
3,将原始数据转换成实部+虚部的形式
4,转换成想要的格式
可在纸上画出流程和格式,方便理解
文章来源:https://blog.csdn.net/cengqiu4314/article/details/135219277
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!