如图可知,通过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次。
定义好这些全局变量,共后面使用
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,转换成想要的格式
可在纸上画出流程和格式,方便理解