Add files via upload

This commit is contained in:
St. Zhang 2024-03-11 17:41:39 +08:00 committed by GitHub
parent b95a5226f2
commit 9cfc66de48
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 161 additions and 0 deletions

View File

@ -0,0 +1,55 @@
function data_radar=DCA1000_Read_Data(fname)
global parameter;
global frame;
%%
fid = fopen(fname,'rb');
%16bits(I/Q)4RX,3TX,16bit
sdata = fread(fid,frame*parameter.Samples*parameter.Chirps*4*3*2,'int16');
sdata = sdata((frame-1)*parameter.Samples*parameter.Chirps*4*3*2+1:frame*parameter.Samples*parameter.Chirps*4*3*2);
%% 1843+DCA1000
fileSize = size(sdata, 1);
lvds_data = zeros(1, fileSize/2);
count = 1;
for i=1:4:fileSize-5
lvds_data(1,count) = sdata(i) + 1i*sdata(i+2);
lvds_data(1,count+1) = sdata(i+1)+1i*sdata(i+3);
count = count + 2;
end
lvds_data = reshape(lvds_data, parameter.Samples*parameter.txNum*parameter.rxNum, parameter.Chirps);
lvds_data = lvds_data.';
cdata = zeros(parameter.txNum*parameter.rxNum,parameter.Chirps*parameter.Samples);
for row = 1:parameter.txNum*parameter.rxNum
for i = 1: parameter.Chirps
cdata(row,(i-1)*parameter.Samples+1:i*parameter.Samples) = lvds_data(i,(row-1)*parameter.Samples+1:row*parameter.Samples);
end
end
fclose(fid);
data_radar_1 = reshape(cdata(1,:),parameter.Samples,parameter.Chirps); %TX1 RX1
data_radar_2 = reshape(cdata(2,:),parameter.Samples,parameter.Chirps); %TX1 RX2
data_radar_3 = reshape(cdata(3,:),parameter.Samples,parameter.Chirps); %TX1 RX3
data_radar_4 = reshape(cdata(4,:),parameter.Samples,parameter.Chirps); %TX1 RX4
data_radar_5 = reshape(cdata(5,:),parameter.Samples,parameter.Chirps); %TX2 RX1
data_radar_6 = reshape(cdata(6,:),parameter.Samples,parameter.Chirps); %TX2 RX2
data_radar_7 = reshape(cdata(7,:),parameter.Samples,parameter.Chirps); %TX2 RX3
data_radar_8 = reshape(cdata(8,:),parameter.Samples,parameter.Chirps); %TX2 RX4
data_radar_9 = reshape(cdata(9,:),parameter.Samples,parameter.Chirps); %TX3 RX1
data_radar_10 = reshape(cdata(10,:),parameter.Samples,parameter.Chirps); %TX3 RX2
data_radar_11 = reshape(cdata(11,:),parameter.Samples,parameter.Chirps); %TX3 RX3
data_radar_12 = reshape(cdata(12,:),parameter.Samples,parameter.Chirps); %TX3 RX4
data_radar=[];
data_radar(:,:,1)=data_radar_1; %
data_radar(:,:,2)=data_radar_2;
data_radar(:,:,3)=data_radar_3;
data_radar(:,:,4)=data_radar_4;
data_radar(:,:,5)=data_radar_5;
data_radar(:,:,6)=data_radar_6;
data_radar(:,:,7)=data_radar_7;
data_radar(:,:,8)=data_radar_8;
data_radar(:,:,9)=data_radar_9;
data_radar(:,:,10)=data_radar_10;
data_radar(:,:,11)=data_radar_11;
data_radar(:,:,12)=data_radar_12;
end

View File

@ -0,0 +1,69 @@
clear;close all;clc;
%% 使mmWave Studio
global parameter;
parameter = generateParameter();
Range_Res=parameter.c/(2*parameter.BandwidthValid); %
Range_Index=Range_Res*(1:parameter.rangeBin);
Speed_Res=parameter.lambda/(2*parameter.dopplerBin*parameter.Tc);
Speed_Index=(-parameter.dopplerBin/2:1:parameter.dopplerBin/2-1)*Speed_Res;
Azimuth_Index=(-parameter.angleBin/2:1:parameter.angleBin/2-1);
global frame;
frame = 1; %frame
%% ADC
fname='C:\ti\mmwave_studio_02_01_01_00\mmWaveStudio\PostProc\adc_data.bin';
data_radar=DCA1000_Read_Data(fname);
%% FFT
range_win = hamming(parameter.Samples); %
doppler_win = hamming(parameter.Chirps);
range_profile = zeros(parameter.Samples,parameter.Chirps,parameter.txNum*parameter.rxNum);
for k=1:parameter.txNum*parameter.rxNum
for m=1:parameter.Chirps
temp=data_radar(:,m,k).*range_win; %
temp_fft=fft(temp,parameter.rangeBin); %chirpNFFT
range_profile(:,m,k)=temp_fft;
end
end
%% FFT
speed_profile = zeros(parameter.Samples,parameter.Chirps,parameter.txNum*parameter.rxNum);
for k=1:parameter.rxNum
for n=1:parameter.rangeBin
temp=range_profile(n,:,k).*(doppler_win)';
temp_fft=fftshift(fft(temp,parameter.dopplerBin)); %rangeFFTMFFT
speed_profile(n,:,k)=temp_fft;
end
end
%% FFT
angle_profile = zeros(parameter.Samples,parameter.Chirps,parameter.angleBin);
for n=1:parameter.rangeBin %range
for m=1:parameter.dopplerBin %chirp
temp=speed_profile(n,m,:);
temp=temp(1:8);
temp_fft=fftshift(fft(temp,parameter.angleBin)); %2D FFTQFFT
angle_profile(n,m,:)=temp_fft;
end
end
%% 2D FFT
figure(1);
speed_profile_temp = reshape(speed_profile(:,:,1),parameter.rangeBin,parameter.dopplerBin);
speed_profile_Temp = speed_profile_temp';
[X,Y]=meshgrid((0:parameter.rangeBin-1)*parameter.Fs*parameter.c/parameter.rangeBin/2/parameter.Slope,(-parameter.dopplerBin/2:parameter.dopplerBin/2-1)*parameter.lambda/parameter.Tc/parameter.dopplerBin/2);
mesh(X,Y,(abs(speed_profile_Temp)));
xlabel('(m)');ylabel('(m/s)');zlabel('');
title('2D FFT');
xlim([0 (parameter.rangeBin-1)*parameter.Fs*parameter.c/parameter.rangeBin/2/parameter.Slope]); ylim([(-parameter.dopplerBin/2)*parameter.lambda/parameter.Tc/parameter.dopplerBin/2 (parameter.dopplerBin/2-1)*parameter.lambda/parameter.Tc/parameter.dopplerBin/2]);
%% Range-Azimuth
angle_profile_display=abs(angle_profile);
angle_profile_display=squeeze(sum(angle_profile_display,2));
figure(2);
imagesc(Azimuth_Index,Range_Index,angle_profile_display);
set(gca,'YDir','normal');
title('Range-Azimuth Heatmap', 'FontWeight', 'bold');
xlabel('Azimuth(°)');
ylabel('Range(m)');

View File

@ -0,0 +1,37 @@
%%
function parameter = generateParameter()
parameter.c = 3e8; %
parameter.stratFreq = 77e9; %
parameter.Tr = 60e-6; %
parameter.Idle_time = 100e-6; %
parameter.Tc = parameter.Tr+parameter.Idle_time; %Chirp
parameter.Samples = 256; %
parameter.Fs = 10e6; %
parameter.Tframe_set = 80e-3; %
parameter.rangeBin = parameter.Samples ; %rangebin
parameter.Chirps = 128; %chirp
parameter.dopplerBin = parameter.Chirps; %dopplerbin
parameter.Slope = 29.982e12; %chirp
parameter.Bandwidth = parameter.Slope * parameter.Tr ; %
parameter.BandwidthValid = parameter.Samples/parameter.Fs*parameter.Slope; %
parameter.centerFreq = parameter.stratFreq + parameter.Bandwidth / 2; %
parameter.lambda = parameter.c / parameter.centerFreq; %
parameter.txAntenna = ones(1,3); %线
parameter.rxAntenna = ones(1,4); %线
parameter.txNum = length(parameter.txAntenna);
parameter.rxNum = length(parameter.rxAntenna);
parameter.virtualAntenna = length(parameter.txAntenna) * length(parameter.rxAntenna);
parameter.angleBin = 180; %anglebin
parameter.dz = parameter.lambda / 2; %线
parameter.dx = parameter.lambda / 2; %线
parameter.numCPI = 50; %
end