⛄一、获取代码方式
获取代码方式1:
完整代码已上传我的资源:【雷达信号处理】基于matlab TDM-MIM雷达信号处理【含Matlab源码 2873期 】
点击上面蓝色字体,直接付费下载,即可。
获取代码方式2:
付费专栏Matlab信号处理(初级版)
备注:
点击上面蓝色字体付费专栏Matlab信号处理(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab信号处理(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码
⛄二、部分源代码
%%
%% 时间:2022年11月06日
clc;
clear all;
close all;
%% 根据采集的数据设置
ADC_samples =96; %ADC采样点数
chirpsNum=96; %chirp脉冲数
numTx =3; %发射天线数
numRx=4; %接收天线数
%% 采集雷达数据总共由256帧
Frame =256; %帧数设置;
%% 读取TI毫米波雷达的数据,可以适用于好几款TI的毫米波,本次采用的是IWR6843ISK。
fileName = ‘adc_data_0duomubiao.bin’;
%不同的雷达readDCA1000()函数有所不同,具体请参考官方手册。
radar_data = readDCA1000(fileName,ADC_samples,numRx);
for frame =1:Frame %帧数设置
datain =radar_data(😢( frame-1 )ADC_sampleschirpsNum + 1 )😦 ADC_sampleschirpsNumframe ));
datain=datain.';
rawData=reshape(datain,[ADC_samples,chirpsNum,numRx*numTx]);
%% 雷达参数设置
parameter = generateParameter();
%% 雷达回波信号建模
% firstChirp = rawData(:,1,1);
%
% figure(1);
% plot(real(firstChirp));
% hold on;
% plot(imag(firstChirp));
% xlabel('采样点数'); ylabel('幅值');title('原始数据实虚部');%第1个chirp。
%% 雷达信号处理
rangeRes = parameter.c / (2 * parameter.BandwidthValid); %距离分辨率 有效带宽
rangeIndex = (0:parameter.rangeBin-1) * rangeRes;
speedRes = parameter.lambda / (2 * parameter.dopplerBin * parameter.Tr);
dopplerIndex = (-parameter.dopplerBin/2:1:parameter.dopplerBin/2 - 1) * speedRes;
angleRes = parameter.lambda / (parameter.virtualAntenna * parameter.dx) * 180 / pi;
angleIndex = (-parameter.virtualAntenna/2:1:parameter.virtualAntenna/2 - 1) * angleRes;
%%1D FFT
% fft1dData = fft(firstChirp);
% figure(3);
% plot(rangeIndex,db(abs(fft1dData)./max(abs(fft1dData))));
% xlabel('距离(m)'); ylabel('幅值(dB)');title('距离维FFT');
%% 时间:2022年11月06日
%% 2D FFT
%% 距离-多普勒谱
rangebinNum = size(rawData,1);
dopplerbinNum = size(rawData,2);
channelNum = size(rawData,3);
fft2dDataPower= zeros(size(rawData));
fft2dDataDB = zeros(size(rawData));
fftRADataPower= zeros(size(rawData));
for chanId = 1:1:channelNum
fft2dDataPower(:,:,chanId) = RDfftMatrix(rawData(:,:,chanId));
end
% figure(4);
% mesh(dopplerIndex,rangeIndex,(abs(squeeze(fft2dDataPower(:,:,chanId)))));
% view(2);
% xlabel('速度(m/s)'); ylabel('距离(m)'); zlabel('幅值');
% title('距离-多普勒谱');
% mesh(abs(squeeze(fft2dDataPower(chanId,:,:))));
%% 距离-角度谱
for dopplerId = 1:1:dopplerbinNum
fftRADataPower(:,dopplerId,:) = RAfftMatrix(rawData(:,dopplerId,:));
end
% figure(5);
% mesh(angleIndex,rangeIndex,(abs(squeeze(fftRADataPower(:,dopplerId,:)))));
% % view(2);
% xlabel('角度');ylabel('距离(m)'); zlabel('幅值');
% title('距离-角度谱');
% RAMap = fftRADataPower(:,:,1);
% for angle =1:12
% for range =1:rangebinNum
% X(angle,range) = RaMap(angle,range)*cos( RAMap(angle,range));
% Y(angle,range)= RaMap(angle,range)*sin( RAMap(angle,range));
% end
% end
% figure();
% mesh(rangeIndex,angleIndex,abs(Y));
%% 多通道非相干积累
%% 静态杂波滤除算法的代码可以加在这里
%%
accumulateRD = chan_Accumulate((fft2dDataPower));
% accumulateRD(:,47:50)=5;
% mesh(dopplerIndex',rangeIndex,(accumulateRD));
figure(1);
imagesc(dopplerIndex',rangeIndex,(accumulateRD));
view(0,-90);
xlabel('速度(m/s)'); ylabel('距离(m)'); zlabel('幅值');
title(['通道积累 第',num2str(frame),'帧']);
pause(0.01);
%% CFAR检测
cfarParameter = generateCfarParameter(); %生成cfar数据
[pointList,cfarRD] = cfar(cfarParameter,db(accumulateRD));
% figure;
% mesh(dopplerIndex',rangeIndex,cfarRD);
% xlabel('速度(m/s)'); ylabel('距离(m)'); zlabel('幅值');
% title('cfar');
%% peakSearch
[RD_pearkSearch,peakSearchList] = peakSearch(cfarRD,pointList);
% figure(2);
% imagesc(dopplerIndex,rangeIndex,RD_pearkSearch);
% view(90,-90);
% xlabel('速度(m/s)'); ylabel('距离(m)'); zlabel('幅值');
% title('峰值搜索');
detectPointNum = size(peakSearchList,2);
%% DOA估计
for targetIdx = 1:detectPointNum
rangeBin = peakSearchList(1,targetIdx);
speedBin = peakSearchList(2,targetIdx);
range = (rangeBin - 1) * rangeRes;
speed = (speedBin - parameter.dopplerBin/2 - 1) * speedRes;
ant = squeeze(fft2dDataPower(rangeBin,speedBin,:));
compCoff = generateCompCoff(parameter,speedBin); %多普勒补偿系数
if 1 %是否进行多普勒补偿
ant = ant .* compCoff;
[angle,doa_abs] = doa(parameter,ant);
end
%% 公众号 :调皮连续波
%% 时间:2022年11月06日
% figure(6);
angleIndex =((-512:1:512-1)/512) * 180 / pi;
% hold on;
% plot(angleIndex,doa_abs);
% title('多普勒补偿前后测角结果');
% xlabel('角度');ylabel('幅值');
% fprintf('目标%d的距离为%f,速度为%f,角度为%f\n',targetIdx,range,speed,angle);
end
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]李树锋.基于完全互补序列的MIMO雷达与5G MIMO通信[M].清华大学出版社.2021
[2]何友,关键.雷达目标检测与恒虚警处理(第二版)[M].清华大学出版社.2011
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除