信号处理_Matlab

  • AD数据
  • 幅相校准
  • 1DFFT
  • 2DFFT

由射频前端发射、接收信号,至获得目标径向距离、径向速度、径向角度、RCS等目标属性信息,这个过程,我们谓之,FMCW毫米波雷达信号处理流程。

VCO为压控振荡器(Voltage Controlled Oscillator),产生调频信号通过发射天线在视场角内发射调频信号,接收目标反射的信号通过混频器(mixer)之后,经过带通滤波器,产生中频信号。我们本篇博客,通过对AD采样之后的数据进行处理,来模拟在硬件板卡上的信号处理流程。

AD数据

通过板卡上的调试通信口(串口,网口等),将在暗室内采集到的目标多帧AD数据发送到上位机中,保存为flash_data_0.bin文件,通过下述代码打开文件并将数据导入。

%% data
clear all;
fid = fopen('.\data\flash_data_0.bin', 'rb');
[RecDataBuff] = fread(fid);
fclose(fid);

下面准备后续信号处理流程需要的参数。我们采集的数据是采用了4发4收16个虚拟通道,每个通道对进入的中频信号采样了512个点,一个点2Byte,一个虚拟通道1KByte数据,16个虚拟通道一chrip数据为16KByte,64chrip数据组成一帧数据。我们提前将各通道之间的福相误差(以第一个通道为基准)存储在amp_calib.mat和phase_calib.mat中(16*1double),导入之后根据一帧数据的结构形成一个512(point)x64(chrip)x16(ANT) complex double格式的数组calib_Ap。

%% param
numChirp = 64;
numPT = 512;
numANT = 16;
Head = 0;
numByte = 2;
len = numPT*numChirp*numANT*numByte;
frameNum = floor(length(RecDataBuff)/(len+Head));
load('amp_calib.mat');
load('phase_calib.mat');
sAmp=amp_calib(1:16);
sPhase=phase_calib(1:16);
commonCfg.numSamp = numPT;
commonCfg.numAnt = numANT;
commonCfg.numChirp = numChirp;
calib_Ap  = (sAmp.*exp(1j * sPhase)).';
calib_Ap  = repmat(reshape(repmat(calib_Ap, commonCfg.numSamp, 1), [commonCfg.numSamp, 1, commonCfg.numAnt]), 1, commonCfg.numChirp, 1);

然后我们将之前导入的AD数据根据采集数据的板卡做一些调整,将每一帧的数据还原回来。包括字节序(大小端)的调整等。将其存储到ADCBuf(512x64x16 double)。

%% ADdata
for frameNow = 1:frameNumFlashReadBuf =RecDataBuff((frameNow-1)*(len+Head)+Head+1:frameNow*(len+Head));for i=1:len/8FrameDataBuff((i-1)*4+1) = bitshift(FlashReadBuf((i-1)*8+7),8)+FlashReadBuf((i-1)*8+8);FrameDataBuff((i-1)*4+2) = bitshift(FlashReadBuf((i-1)*8+5),8)+FlashReadBuf((i-1)*8+6);FrameDataBuff((i-1)*4+3) = bitshift(FlashReadBuf((i-1)*8+3),8)+FlashReadBuf((i-1)*8+4);FrameDataBuff((i-1)*4+4) = bitshift(FlashReadBuf((i-1)*8+1),8)+FlashReadBuf((i-1)*8+2);end for i=1:length(FrameDataBuff)if(FrameDataBuff(i)>32767)FrameDataBuff(i) = FrameDataBuff(i)-65536;end;end    for k=1:numChirpfor j=1:numANTADCBuf(:,k,j)=FrameDataBuff(1+numPT*(j-1)+numPT*numANT*(k-1):numPT*j+numPT*numANT*(k-1)); end        endfigure(3);plot(ADCBuf(:,:,1));hold on;for j=2:numANTplot(ADCBuf(:,:,j)+1024*(j-1)); endhold off;ylim([-1024 1024*numANT]); disp(frameNow);

将对16(4T4R)个虚拟通道的中频信号,进行采样的AD数据画图,结果如下。

幅相校准

前文提到的amp_calib.mat和phase_calib.mat为事先准备好的幅相校准所需用的参考值。这个参考值也可以简单通过对暗室目标的AD数据进行下面的运算来获取。

for k=1:numAntcalibAmp(k) = dtmp(1) / dtmp(k);
end
for k=1:numAntcalibPhase(k) = dtmp(1) - dtmp(k);
end

我们用这个校准参数也很简单,就是将准备好的ADCBuf与calib_Ap点乘即可。

%% calibADCBufCalib=ADCBuf.*calib_Ap;

1DFFT

我们下边对一帧数据中的一chrip的AD数据按列做FFT运算(针对16个虚拟通道,分别做512个点距离维的FFT),输出结果为FFT1D_Buf(512x16 complex double)。然后将FFT1D_Buf中的前10个点(距离单元)置零(消除直流分量的影响),对FFT1D_Buf中的数据按行(不同天线,角度维)分别进行128点(16+112)和(4+124)的FFT(补偿测距的精度),然后对两个FFT的结果进行abs运算得到FFT3D_BufABS和FFT3D_BufABS1,然后对两个abs结果左右两半部分进行交换。

%% FFT1D   FFT1D_Buf=fft(squeeze(ADCBufCalib(:,1,:)));FFT1D_Buf(1:10,:)=0;FFT3D_Buf=fft(FFT1D_Buf,128,2);FFT3D_BufABS=abs(FFT3D_Buf);FFT3D_Buf1=fft(FFT1D_Buf(:,1:4),128,2);FFT3D_BufABS1=abs(FFT3D_Buf1);     figure(4);meshz(fftshift(FFT3D_BufABS,2));figure(5);meshz(fftshift(FFT3D_BufABS1,2));

下面左边是FFT3D_BufABS,右边是FFT3D_BufABS1。

2DFFT

我们下边对第一个通道的,64chrip(一帧)数据按列做FFT运算(针对第一个通道,分别对64Chrip数据做512点距离维的FFT),取前256个FFT结果点(共轭对称)得到FFT1D_Buf(256x64 complex double),然后对FFT1D_Buf进行取均值运算,得到每一行(64chrip)均值的列向量。

      FFT1D_Buf=fft(squeeze(ADCBuf(:,:,1)));FFT1D_Buf=FFT1D_Buf(1:numPT/2,:);FFT1D_Mean=mean(FFT1D_Buf,2);figure(11);plot(abs(FFT1D_Mean));

FFT1D_Mean图如下:

然后使用FFT1D_Buf中每一天线通道不同的chrip数据减去FFT1D_Mean数据(消除直流分量以及随机噪声,若针对静止物体,因各chrip数据相位不同,不要此操作),然后沿着速度维(按照行向量)进行FFT操作,再进行abs运算求模,最后将零频分量移动到数组中心。

 FFT1D_Old=FFT1D_Mean;for chirpNow=1:numChirpFFT1D_Minus(:,chirpNow)=FFT1D_Buf(:,chirpNow)-FFT1D_Old;     endFFT2D_Buf=fft(FFT1D_Minus,[],2);FFT2D_ABS=abs(FFT2D_Buf);figure(2)meshz(fftshift(FFT2D_ABS,2));pause(0.1);
end
disp('over');

figure(2)图如下(静止目标):

十六宿舍 原创作品,转载必须标注原文链接。
©2023 Yang Li. All rights reserved.
欢迎关注 『十六宿舍』,大家喜欢的话,给个

雷达编程实战之信号处理流程相关推荐

  1. 雷达编程实战之恒虚警率(CFAR)检测

    在雷达系统中,目标检测是一项非常重要的任务.检测本身非常简单,它将信号与阈值进行比较,超过阈值的信号则认为是目标信号,所以目标检测的真正工作是寻找适当的阈值.由于目标误检的严重后果,因此雷达系统希望有 ...

  2. Java-GUI编程实战之管理系统 Day1【项目开发流程、软件三层架构、项目需求、项目结构分析】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

  3. 车载雷达典型信号处理流程及距离FFT

    本篇文章开始想说一说车载雷达典型信号处理流程方案,从宏观角度把握学习脉络,知道自己所学知识处于哪一个部分,并对其中的距离维FFT进行讲解. 下图是车载毫米波雷达典型的信号处理流程图,图中RawData ...

  4. 《Go并发编程实战》第2版 紧跟Go的1.8版本

    文章作者:郝林(<Go并发编程实战 (第2版)>作者) 终于来了!经过出版社的各位编辑.校对.排版伙伴与我的N轮PK和共同努力,<Go并发编程实战>第2版的所有内容终于完全确定 ...

  5. 阿里技术专家加多:Java异步编程实战之基于JDK中的Future实现异步编程 | 文末赠书...

    正文共:14244 字 8 图 预计阅读时间: 36 分钟 本节内容摘自<Java异步编程实战>中的一小节. 一.前言 本节主要讲解如何使用JDK中的Future实现异步编程,这包含如何使 ...

  6. 标杆徐linux云计算视频,标杆徐2018 Linux自动化运维系列④: Shell脚本自动化编程实战...

    2019年录制SHell新课地址 贴切企业脚本编写思路讲解,带你玩Shell脚本编程实战. 本套课程从实际项目案例出发,近100个Shell实例讲解,由浅入深,循序渐进,带你玩转Shell编程的方方面 ...

  7. aqs clh java_【Java并发编程实战】—– AQS(四):CLH同步队列

    在[Java并发编程实战]-–"J.U.C":CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形. 其主要从双方面进行了改造:节点的结构与节点等待机制.在结构上引入了 ...

  8. Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

  9. Java-GUI编程实战之管理系统 Day2【Swing(组件介绍、布局管理器、事件类及监听器类)、基础组件按钮和输入框的用法】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

最新文章

  1. 消息服务器怎么测试,如何对服务器性能进行测试
  2. python标准库os的方法_Python中标准库OS的常用方法总结大全
  3. dedecms 添加,编辑文章时 文章标题有字数限制的解决办法。
  4. C++ Socket 编程
  5. linux 文本排序、合并和分割 -转
  6. jquery可见性过滤选择器:hidden、:visible
  7. 国内首个基于liftweb开发的项目上线运营
  8. 如何把代码写的更优雅,你需要这一份代码精进书单!
  9. 企业微信好不好,OA软件何去何从?
  10. 人脸美化随笔1——研究方向总结
  11. 中国身份证号码验证,支持15,18位
  12. 安卓recovery刷机教程
  13. 计算与背景反差较大显示明显的前景色
  14. 三星砸钱买公司以提升Bixby性能 奋力追赶亚马逊谷歌
  15. CTFshow新春欢乐赛--web6--反序列化字符串逃逸
  16. LED软模组圆柱屏、柔性屏、异形屏、柱子屏、方柱屏、创意显示屏案例分享
  17. PostgreSQL高效分区表实现-pg_pathman
  18. vue ajax传输数组,ajax请求回数组数据,Vue页面数组没同步问题
  19. 牧场物语gb模拟器JAVA_3DS GBC模拟器+GB/GBC游戏合集下载
  20. mp4文档ISO/IEC 14496 part 12解读

热门文章

  1. AD18中安装自己绘制的原件库
  2. HDU2159(多重背包)
  3. 诺基亚的最后机会:没落贵族能否抗衡苹果安卓
  4. 《剩女郎》的艺术魅力
  5. python中 pip不慎卸载了,重新安装方法
  6. Flutter 动画篇
  7. Macbook M1 软件不兼容的解决办法
  8. 使用axios+koa+exceljs下载excel文件完整示例
  9. QST青软实训学员学习总结
  10. 前端实现文件上传的断点续传