赞
踩
主要研究:距离,速度,角度 3个维度。
特点:穿透塑料,干燥墙壁,玻璃等材料
适应雨,雾,灰层,关照,黑暗等环境。
由初始频率F1开始,以S的速率匀速递增至F2 结束,成为调频连续波
几个概念:
带宽B = F2-F1
TC:一次递增花费的时间
S:斜率
1)输入两个正弦波信号,输出的信号的频率是两个信号的差值。任意时间的频率都是两个输入信号的差值
2)输出信号的起始相位也是两个信号的起始差值
当混频器输出的中频信号的频率 称为中频信号IF = S*t = S*2d/c 得出,距离d = IF*c/2S
由IF> 1/Tc
S*2dres/c>1/Tc
dres>c/(TC*2S) = c/2B
由ADC 采样的中频信号反映的是中频信号频率,幅度信息。
如果中频信号的频率过快,超过ADC的采样率,那么信号也会丢失。
故:IF = S2dmax/c < Fs(Fs为ADC的采样率)
得出。dmax = Fs*c/2S
1,以上Chirps 具有相同的带宽B=》距离分辨率一致。
2,最大距离dmax = Fs*c/2S ,由于A的斜率S只有B的一半,当需要检测相同的最大距离时,A的采样率需求也只有B的一半
3,由于斜率更高,一次采样时间更短。
中频信号经过ADC 反馈出,频率/ADC值,经过FFT后,得到距离和幅值的波形图
由混频器输出的不同距离的中频信号,他们的峰值也是不一样
包含虚部
- %%% This script is used to read the binary file produced by the DCA1000
- %%% and Mmwave Studio
- %%% Command to run in Matlab GUI -readDCA1000('<ADC capture bin file>')
- function [retVal] = readDCA1000(fileName) %新建一个函数名为readDCA1000 的函数,输入fileName,输出retVal 表格
- %% global variables
- % change based on sensor config
- numADCSamples = 256; % number of ADC samples per chirp 采样点数是256个
- numADCBits = 16; % number of ADC bits per sample ADC的采样位数
- numRX = 4; % number of receivers 接收器数量
- numLanes = 2; % do not change. number of lanes is always 2 LVDS的平台数
- isReal = 0; % set to 1 if real only data, 0 if complex data0 0 是包含虚部
- %% read file
- % read .bin file
- fid = fopen(fileName,'r');%获取二进制文件由文件标识符 fileID
- adcData = fread(fid, 'int16'); %返回一个列向量,每个元素以int16 形式格式
- % if 12 or 14 bits ADC per sample compensate for sign extension
- if numADCBits ~= 16
- l_max = 2^(numADCBits-1)-1;
- adcData(adcData > l_max) = adcData(adcData > l_max) - 2^numADCBits;
- end
- fclose(fid);
- fileSize = size(adcData, 1); %读取数据长度
- % real data reshape, filesize = numADCSamples*numChirps
- if isReal
- numChirps = fileSize/numADCSamples/numRX;
- LVDS = zeros(1, fileSize);
- %create column for each chirp
- LVDS = reshape(adcData, numADCSamples*numRX, numChirps);
- %each row is data from one chirp
- LVDS = LVDS.';
- else
- % for complex data
- % filesize = 2 * numADCSamples*numChirps
- numChirps = fileSize/2/numADCSamples/numRX;
- LVDS = zeros(1, fileSize/2);
- %combine real and imaginary part into complex data
- %read in file: 2I is followed by 2Q
- counter = 1;
- for i=1:4:fileSize-1
- LVDS(1,counter) = adcData(i) + sqrt(-1)*adcData(i+2);
- LVDS(1,counter+1) = adcData(i+1)+sqrt(-1)*adcData(i+3);
- counter = counter + 2;
- end
- % create column for each chirp
- LVDS = reshape(LVDS, numADCSamples*numRX, numChirps);
- %each row is data from one chirp
- LVDS = LVDS.';
- end
- %organize data per RX
- adcData = zeros(numRX,numChirps*numADCSamples);
- for row = 1:numRX
- for i = 1: numChirps
- adcData(row, (i-1)*numADCSamples+1:i*numADCSamples) = LVDS(i, (row-1)*numADCSamples+1:row*numADCSamples);
- end
- end
- % return receiver data
- retVal = adcData;
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。