【雷达信号处理】TDM-MIM雷达信号处理【含Matlab源码 2873期 】

在这里插入图片描述

⛄一、获取代码方式

获取代码方式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 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值