MATLAB雷达信号处理
close all;clearvars;clc;
dbstop if error;
fid = fopen('tempiqa1.dat' , 'w+');
%% 模拟目标运动轨迹以及天线的基本参数
Pt = 10e-3; %发送信号功率w
Gt = 10; %天线增益 db
RCS =1.5; %取汽车的典型值,反射物的横截面积 平方米
ADCsamplef1 = 2e6; %ADC采样率,主要是由于其中存在等待,为了保证时长的准确,此处chirp时长为8us ; 其中3us采样,5us等待
Framet = 50e-3; %扫频间隔为50ms
c = 3E8;
lambda = 3E8/77E9;
Aeff = lambda/2 * 0.04; %接受天线的有效面积m^2
numRxAnnate = 4; %接收天线个数
d = lambda/2;
DistanceOfEachAnnate = [0 d 2*d 3*d]; %接收天线间距,以第一幅接收天线为0,以后每一段为两幅接收天线之间的间距;
% sction1 距离精度高,速度精度低段
SampleRsec1 = 16;
SampleVsec1 = 1024;
Bandsec1 = 20E6;
T1 = 1/ADCsamplef1*(SampleRsec1);
U1 = Bandsec1/T1;
DR1 = c/ 2 / Bandsec1;
DV1 = lambda/ 2 / T1 / SampleVsec1;
t1 = [0:SampleRsec1-1]/ADCsamplef1;
F1 = zeros(SampleVsec1,SampleRsec1);
% sction2 距离精度高,速度精度低段
ADCsamplef2 = 5.4e6; %ADC采样率,主要是由于其中存在等待,为了保证时长的准确,此处chirp时长为47us ; 其中42us采样,5us等待
SampleRsec2 = 256;
SampleVsec2 = 128;
Bandsec2 = 800e6;
T2 = 1/ADCsamplef2*(SampleRsec2);
U2 = Bandsec2/T2;
DR2 = c/ 2 / Bandsec2;
DV2 = lambda/ 2 / T2 / SampleVsec2;
t2 = [0:SampleRsec2-1]/ADCsamplef2;
F2 = zeros(SampleVsec2,SampleRsec2);
% 目标回波信号
Frame = 300; %至少要大于目标的帧数
TargetNumber = 3; %回波目标个数
TargerFrameOrignalMatrix = [Frame Frame Frame]; %如果目标出现帧数帧数超出,则目标被删除
TargerRangeOrignalMatrix = [25 5 13]; %m 距离
TargerVolectyOrignalMatrix = [10 12 18]; %m/s 速度为正表示远离 , 速度为负表示靠近
TargerAccelerationOrignalMatrix = [0 1 5]; %m/s ^2
TargerRoadOrignalMatrix = [2 0 0]; %默认设定目标为直线运动,此处给出目标的车道位置,目标的角度信息由距离关系自动计算。其中0表示中间车道,左边为负右边为正
Mode = 0;
%% 信号模拟
%目标信号建模
Fk = [1 Framet;0 1];
Bk = [(Framet^2)/2 Framet]';
% 峰值点结构体定义
peakout.point_r = 0;peakout.point_v = 0;peakout.I1 = 0;peakout.Q1 = 0;
peakout.I2 = 0;peakout.Q2 = 0;peakout.I3 = 0;peakout.Q3 = 0;peakout.I4 = 0;peakout.Q4 = 0;
peaknum = 3072;
for i = 1 : TargetNumber %目标个数循环
Targetdeta = zeros(2 ,Frame );
Targetdeta(:,1) = [TargerRangeOrignalMatrix(i) TargerVolectyOrignalMatrix(i)]';
for j = 2 : TargerFrameOrignalMatrix(i) %目标帧数循环
Targetdeta(1:2,j) = Fk*Targetdeta(1:2,j-1) + Bk.*TargerAccelerationOrignalMatrix(i);
Targetdeta(3,j) = asind(3.6*TargerRoadOrignalMatrix(i) / Targetdeta(1 , j));
if (Targetdeta(1 , j) < 0)
Targetdeta(1 , j) = 0;
Targetdeta(2 , j) = 0;
end
end
Target(i).target = Targetdeta();
Target(i).Pr = Pt*Gt./(4*pi.*Target(i).target(1,:).^2) .* RCS .* (1/4/pi./Target(i).target(1,:).^2.*Aeff);
Target(i).sn = 1.3806505e-24 * 800e6 * (32+(9/5)*25);
end
figure;
for i = 1 : TargetNumber
plot(Target(i).target(1,:).*sind(Target(i).target(3,:)) , Target(i).target(1,:) , '*');
hold on;
end
% 模拟回波时域信号
h1 = figure;
h2 = figure;
h3 = figure;
for cnt = 1 : Frame
set(0,'CurrentFigure' , h3);
for i = 1 : TargetNumber
plot(cnt , Target(i).target(1,cnt) , 'o');
hold on;
xlabel('帧数');
ylabel('距离');
end
if(mod(cnt,2) == 0)
Mode = 1; %表示srsect1段 16*1024 20Mhz
% 初始化天线存储内存
for annatacnt = 1 : numRxAnnate
srsec1(annatacnt).RX = zeros( SampleVsec1 , SampleRsec1);
end
for k = 1 :TargetNumber
for anrxcnt = 1 : numRxAnnate
dphi(anrxcnt) = 2*pi*DistanceOfEachAnnate(anrxcnt)*sind(Target(k).target(3,cnt)) / lambda;
end
%sec1 段回波数据模拟
for i=1:SampleVsec1
for j=1:SampleRsec1
R = Target(k).target(1,cnt) +Target(k).target(2,cnt)*(i-1)*T1 + Target(k).target(2,cnt)*t1(j);
f = 2*R/lambda + 2*U1*R*t1(j)/c;
w = 2*pi*f;
F1(i,j) = w + (rand(1)-0.5)/0.1/180*pi;
end
end
for i=1:SampleVsec1
for j=1:SampleRsec1
w = F1(i,j);
for anncnt = 1 : numRxAnnate
srsec1(anncnt).RX(i,j) = srsec1(anncnt).RX(i,j) +sqrt( Target(k).Pr(cnt))* exp(sqrt(-1)*(w + dphi(anncnt))) + (rand(1) - 0.5)* sqrt( Target(k).sn);% * %dphi(anncnt)
end
end
end
end
srsecrx1 = srsec1(1).RX';
srsecrx2 = srsec1(2).RX';
srsecrx3 = srsec1(3).RX';
srsecrx4 = srsec1(4).RX';
black_manR = blackman(SampleRsec1);
black_manV = blackman(SampleVsec1)';
SR1 = srsecrx1.*repmat(black_manR,1,SampleVsec1);
SR1 = SR1.*repmat(black_manV,SampleRsec1,1);
fft_data1_1d = fft(SR1,SampleRsec1);
fft_data1_1d = fft_data1_1d';
fft_data1_2d = fft(fft_data1_1d,SampleVsec1);
abs_data1 = abs(fft_data1_2d);
%
SR2 = srsecrx2.*repmat(black_manR,1,SampleVsec1);
SR2 = SR2.*repmat(black_manV,SampleRsec1,1);
fft_data2_1d = fft(SR2,SampleRsec2);
fft_data2_1d = fft_data2_1d';
fft_data2_2d = fft(fft_data2_1d,SampleVsec1);
abs_data2 = abs(fft_data2_2d);
%
SR3 = srsecrx3.*repmat(black_manR,1,SampleVsec1);
SR3 = SR3.*repmat(black_manV,SampleRsec1,1);
fft_data3_1d = fft(SR3,SampleRsec1);
fft_data3_1d = fft_data3_1d';
fft_data3_2d = fft(fft_data3_1d,SampleVsec1);
abs_data3 = abs(fft_data3_2d);
%
SR4 = srsecrx4.*repmat(black_manR,1,SampleVsec1);
SR4 = SR4.*repmat(black_manV,SampleRsec1,1);
fft_data4_1d = fft(SR4,SampleRsec1);
fft_data4_1d = fft_data4_1d';
fft_data4_2d = fft(fft_data4_1d,SampleVsec1);
abs_data4 = abs(fft_data4_2d);
set(0,'CurrentFigure' , h1);
mesh(abs_data1);
title( strcat('一维20Mhz 16点 ; dr = ' , num2str(DR1) ,'m ; 二维1024点; dv = ' , num2str(DV1) , 'm/s'));
xlabel('距离维');
ylabel('速度维');
else
Mode = 2; %表示srsect1段 256*128 800Mhz
% 初始化天线存储内存
for annatacnt = 1 : numRxAnnate
srsec2(annatacnt).RX = zeros( SampleVsec2 , SampleRsec2);
end
%sec2 段回波数据模拟
for k = 1 :TargetNumber
for anrxcnt = 1 : numRxAnnate
dphi(anrxcnt) = 2*pi*DistanceOfEachAnnate(anrxcnt)*sind(Target(k).target(3,cnt)) / lambda;
end
%sec2 段回波数据模拟
for i=1:SampleVsec2
for j=1:SampleRsec2
R = Target(k).target(1,cnt) +Target(k).target(2,cnt)*(i-1)*T2 + Target(k).target(2,cnt)*t2(j);
f = 2*R/lambda + 2*U2*R*t2(j)/c;
w = 2*pi*f;
F2(i,j) = w + (rand(1)-0.5)/0.1/180*pi;
end
end
for i=1:SampleVsec2
for j=1:SampleRsec2
w = F2(i,j);
for anncnt = 1 : numRxAnnate
srsec2(anncnt).RX(i,j) = srsec2(anncnt).RX(i,j) + sqrt( Target(k).Pr(cnt)) * exp(sqrt(-1)*(w + dphi(anncnt)))+ (rand(1) - 0.5)* sqrt( Target(k).sn);
end
end
end
end
srsecrx1 = srsec2(1).RX';
srsecrx2 = srsec2(2).RX';
srsecrx3 = srsec2(3).RX';
srsecrx4 = srsec2(4).RX';
black_manR = blackman(SampleRsec2);
black_manV = blackman(SampleVsec2)';
SR1 = srsecrx1.*repmat(black_manR,1,SampleVsec2);
SR1 = SR1.*repmat(black_manV,SampleRsec2,1);
fft_data1_1d = fft(SR1,SampleRsec2);
fft_data1_1d = fft_data1_1d';
fft_data1_2d = fft(fft_data1_1d,SampleVsec2);
abs_data1 = abs(fft_data1_2d);
%
SR2 = srsecrx2.*repmat(black_manR,1,SampleVsec2);
SR2 = SR2.*repmat(black_manV,SampleRsec2,1);
fft_data2_1d = fft(SR2,SampleRsec2);
fft_data2_1d = fft_data2_1d';
fft_data2_2d = fft(fft_data2_1d,SampleVsec2);
abs_data2 = abs(fft_data2_2d);
%
SR3 = srsecrx3.*repmat(black_manR,1,SampleVsec2);
SR3 = SR3.*repmat(black_manV,SampleRsec2,1);
fft_data3_1d = fft(SR3,SampleRsec2);
fft_data3_1d = fft_data3_1d';
fft_data3_2d = fft(fft_data3_1d,SampleVsec2);
abs_data3 = abs(fft_data3_2d);
%
SR4 = srsecrx4.*repmat(black_manR,1,SampleVsec2);
SR4 = SR4.*repmat(black_manV,SampleRsec2,1);
fft_data4_1d = fft(SR4,SampleRsec2);
fft_data4_1d = fft_data4_1d';
fft_data4_2d = fft(fft_data4_1d,SampleVsec2);
abs_data4 = abs(fft_data4_2d);
set(0,'CurrentFigure' , h2);
mesh(abs_data1);
title( strcat('一维800Mhz 256点 ; dr = ' , num2str(DR2) ,'m ; 二维128点; dv = ' , num2str(DV2) , 'm/s'));
xlabel('距离维');
ylabel('速度维');
end
%% 找峰值点,并把峰值点传出来
avemeans = mean(abs_data1)*1.5;
avemeans = repmat(avemeans , size(abs_data1 , 1) , 1);
peak_matrix = imregionalmax(abs_data1);
peak_matrix = peak_matrix .* abs_data1;
peak_matrix(peak_matrix < avemeans) = 0;
peak_matrix = peak_matrix * 1e6;
g_menxian = avemeans(1,:)*1e6;
[point_r point_v]= find(peak_matrix > 0);
len = length(point_r);
if len > 3072
len = 3072;
end
for peakcnt = 1 : 3072
peakout(peakcnt).point_r = 0; peakout(peakcnt).point_v=0;
peakout(peakcnt).I1 = 0;peakout(peakcnt).Q1 = 0;
peakout(peakcnt).I2 = 0; peakout(peakcnt).Q2 = 0;
peakout(peakcnt).I3 = 0; peakout(peakcnt).Q3 = 0;
peakout(peakcnt).I4 = 0; peakout(peakcnt).Q4 = 0;
end
%peak_matrix为峰值点位置 ; g_menxian为门限值,之后组帧数据传输出去
for peakcnt = 1 : length(point_r)
peakout(peakcnt).point_r = point_r(peakcnt);
peakout(peakcnt).point_v = point_v(peakcnt);
peakout(peakcnt).I1 = real(fft_data1_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
peakout(peakcnt).Q1 = imag(fft_data1_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
peakout(peakcnt).I2 = real(fft_data2_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
peakout(peakcnt).Q2 = imag(fft_data2_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
peakout(peakcnt).I3 = real(fft_data3_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
peakout(peakcnt).Q3 = imag(fft_data3_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
peakout(peakcnt).I4 = real(fft_data4_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
peakout(peakcnt).Q4 = imag(fft_data4_2d( point_r(peakcnt) , point_v(peakcnt))) * 1e6;
end
for peakcnt = 1 : 3072
fwrite(fid, peakout(peakcnt).point_r , 'uint16');
fwrite(fid, peakout(peakcnt).point_v , 'uint16');
fwrite(fid, int16(peakout(peakcnt).I1) , 'int16');
fwrite(fid, int16(peakout(peakcnt).Q1) , 'int16');
fwrite(fid, int16(peakout(peakcnt).I2) , 'int16');
fwrite(fid, int16(peakout(peakcnt).Q2) , 'int16');
fwrite(fid, int16(peakout(peakcnt).I3) , 'int16');
fwrite(fid, int16(peakout(peakcnt).Q3) , 'int16');
fwrite(fid, int16(peakout(peakcnt).I4) , 'int16');
fwrite(fid, int16(peakout(peakcnt).Q4) , 'int16');
end
pause(0.01);
end
fclose(fid);
MATLAB雷达信号处理相关推荐
- 雷达信号仿真matlab,下面matlab雷达信号处理仿真程序的问题
以下是我的回波信号和脉压,mtd,cfar处理过程 我有两个问题, 1.为什么mtd的结果会有两个通道都有信号,怎么能让只有一个通道有信号 2.快门限恒虚警处理结果出不来,我哪里编程错误了,请大家帮帮 ...
- 【雷达信号处理】脉冲多普勒PD及其MATLAB实现
这是目录 1 原理介绍 1.1 脉冲多普勒过程 1.2 信号模型 1.3 PD的实现 1.4 相参和非相参累积 2 实验内容 2.1 参数 3 MATLAB实现 参考文献 1 原理介绍 1.1 脉冲多 ...
- 雷达信号处理算法:静态杂波滤除(附MATLAB代码和数据)
本文编辑:调皮哥的小助理 本期文章将介绍三种雷达信号处理常用的静态杂波滤方法的基本原理,分别是零速通道置零法.动目标显示(MTI)以及相量均值相消算法(平均相消算法),并分析了静态杂波的滤除效果,以及 ...
- matlab雷达处理工具箱,GitHub - feng-zx/radar_tools: 雷达信号处理工具箱
radar_tools工具箱 雷达信号处理MATLAB工具箱 2.0 直接将 "+rt"文件夹放在目录下即可 运行时命令直接输入 rt.[函数名] rt工具箱 数据进制转换函数 d ...
- matlab连续波文件,radar_matlab 雷达信号处理M,线性调频连续波的,一切运行正常 非常好用。 271万源代码下载- www.pudn.com...
文件名称: radar_matlab下载 收藏√ [ 5 4 3 2 1 ] 开发工具: matlab 文件大小: 224 KB 上传时间: 2014-12-30 下载次数: 109 提 ...
- 【雷达仿真 | FMCW TDMA-MIMO毫米波雷达信号处理仿真(可修改为DDMA-MIMO)】
本文编辑:调皮哥的小助理 本文引用了CSDN雷达博主@XXXiaojie的文章源码(https://blog.csdn.net/Xiao_Jie1),加以修改和注释,全面地.详细地阐述了FMCW TD ...
- MATLAB数字信号处理(2)LFM脉冲雷达回波处理仿真
将上学期的"气象雷达原理与系统"课程报告放到blog上. 摘要 线性调频(LFM)信号是应用广泛的一种波形,主要优点是脉冲压缩的形状和信噪比对多普勒频移不敏感,即在目标速度未知的情 ...
- 【雷达通信】基于matlab雷达仿真模拟系统【含Matlab源码 150期】
⛄一.获取代码方式(附课程作业报告) 获取代码方式1: 完整代码已上传我的资源:[雷达通信]基于matlab雷达仿真模拟系统[含Matlab源码 150期] 点击上面蓝色字体,直接付费下载,即可. 获 ...
- 伪随机编码冲雷达信号处理仿真
目录 1.题目论述 1 2.回波信号及脉压-FFT后的表达式 1 2.1视频表达式: 1 2.2脉压后的表达式 1 2.3 FFT后的表达式 2 3 m序列的性质与仿真 ...
- 雷达信号处理脉冲压缩算法GPU实现及加速(含完整代码)
下面展示GPU端完成雷达信号处理脉冲压缩算法加速. 为探索GPU部署雷达信号处理提供参考. 脉冲压缩算法 在GPU实现,模拟LFM线性调频信号,完成GPU端 cuda加速 最终与matlab答案进行正 ...
最新文章
- 如何将程序添加到系统服务实现开机自启动
- 支付宝支付 第九集:产品数据和支付二维码对接
- shell之sed 记录
- $dbms=mysql_MySQL学习笔记(一)
- WIN 7下绑定网关MAC地址
- 生成目录树CMD命令(bat文件)
- MDOP套装之app-v安装使用及功能说明
- 如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(9月17日-9月23日)
- 链接标签(HTML)
- Qi v1.2.4协议 之 9 Stand-by Power 【英文翻译】
- Web漏洞扫描器—AWVS
- jQuery实现动态添加删除表格的行
- 加州大学戴维斯计算机博士生,关于加州大学戴维斯分校博士研究生CSC奖学金信息分享会的通知...
- GDAL+Basemap+IDW(反距离权重)代替ARCPY,制作温度、降雨分布图
- PostgreSQL修改用户密码
- C# 10分钟完成百度翻译(机器翻译)——入门篇
- 前端做CA认证碰到的坑
- [Unity]项目工程文件太大删除Library文件夹会怎么样
- GK 1424 L劳易测标签识别开关
热门文章
- 精简版xp安装iis5.1
- 计算机鼠标双击怎么,解决方案:解决鼠标双击问题的方法(最全面,最实用)_计算机基础知识_IT /计算机_信息...
- 管家婆普及版_昆明逸马软件 — 管家婆服装普及版
- PROTEL技术大全
- [译文]使用VBA-SDL-H寻找图片
- 计算机电容与晶体管等硬件的作用,太实用了|开关电源中各元器件的命名与用途!-EDA365电子论坛通信数码-人工智能-计算机-半导体-手机家电消费电子硬件门户网站...
- 数字通信技术知识点二
- cv2-drawline
- 测绘地物的识别:建筑上怎么样区别挑廊、走廊、檐廊
- 计算机四级和网络工程师区别,计算机四级网络工程师和软考中级的网络工程师有什么区别啊?...