【雷达】基于圆拟合(circfit)算法抑制雷达信号处理中的直流分量附matlab代码

简介: 【雷达】基于圆拟合(circfit)算法抑制雷达信号处理中的直流分量附matlab代码

1 内容介绍

在现代脉冲雷达系统中,相位编码信号以其较好的抗干扰性能,越来越被重视和使用.MATLAB作为一种仿真工具,经常被用于雷达信号处理方案设计中.本文用MATLAB对相位编码信号的信号处理过程进行仿真,对信号处理过程中各节点信号进行分析,为雷达系统的总体设计提供了参考依据.

2 部分代码


clc;

close all;

clear all;


%% 雷达参数

Tx_Number = 2;               %发射天线

Rx_Number = 4;               %接收天线

Range_Number = 128;          %距离点数(每个脉冲128个点)

Doppler_Number = 128;        %多普勒通道数(总共128个重复脉冲数)

global Params;

Params.NChirp = Doppler_Number;               %1帧数据的chirp个数

Params.NChan =  Rx_Number;                    %RxAn数,ADC通道数

Params.NSample = Range_Number;                %每个chirp ADC采样数

Params.Fs = 2.5e6;                           %采样频率

Params.c = 3.0e8;                     %光速

Params.startFreq = 77e9;              %起始频率

Params.freqSlope = 60e12;             %chirp的斜率

Params.bandwidth = 3.072e9;           %真实带宽

Params.lambda=Params.c/Params.startFreq;    %雷达信号波长

Params.Tc = 144e-6;                         %chirp周期

global FFT2_mag;


%% 坐标计算

[X,Y] = meshgrid(Params.c*(0:Params.NSample-1)*Params.Fs/2/Params.freqSlope/Params.NSample, ...

   (-Params.NChirp/2:Params.NChirp/2 - 1)*Params.lambda/Params.Tc/Params.NChirp/2);  


%% 距离时域信号直流分量去除

load ReIm_Data_All.mat ;

fft1d_before=ReIm_Data_All;


AmR=zeros(Range_Number,Doppler_Number);

dataR=zeros(Range_Number,Doppler_Number,Tx_Number*Rx_Number);


for antenna=1:Tx_Number*Rx_Number

   for Range=1:Range_Number

       %1.估计每个扫频周期时间内的基带复信号中频信号的幅值

       AmR(Range,:)=fft1d_before(Range,:,antenna);

       

       %2.幅值时间序列和已知的初始相位时间序列得到复平面上的离散点      

%         figure(2);

%         plot(fft1d(:,doppler,1),'o');

%         title([num2str(doppler)]);

       

       %3.一个距离门上的所有多普勒点进行圆拟合

       xdataR=real(AmR(Range,:));

       ydataR=imag(AmR(Range,:));

       

       %最小二乘法拟合

       k0 = ones(1,3);

       F = @(k)(xdataR-k(1)).^2+(ydataR-k(2)).^2-k(3)^2;

       [k,resnorm] = lsqnonlin(F,k0);


       %k(1)是圆心的x坐标

       %k(2)是圆心的y坐标

       %k(3)的绝对值是圆的半径

       

%         r0 = [k(1),k(2)];

%         R = abs(k(3));

%         xx = k(1)-R:0.01*R:k(1)+R;

%         y1_h = sqrt(R.^2 - (xx - r0(1)).^2) + r0(2);

%         y2_h = -sqrt(R.^2 - (xx - r0(1)).^2) + r0(2);

%         figure(1);

%         plot(xx,y1_h,'b')

%         hold on

%         plot(xx,y2_h','b')

%         plot(xdata,ydata,'*r')

%         title('距离维圆拟合');

%         xlabel('实部');

%         ylabel('虚部');

%         axis equal %axis square

       

       %4.修正补偿

       %获取拟合圆的圆心

       x=k(1);

       y=k(2);

       

       %将圆心移到零点(0,0)

       xdataR=xdataR-x;

       ydataR=ydataR-y;


       %5.得到新的点的时间序列相位

       dataR(Range,:,antenna)=complex(xdataR,ydataR);

%         hold off;

   end

end

 

%% 速度维 圆拟合

AmV=zeros(Range_Number,Doppler_Number);

dataV=zeros(Range_Number,Doppler_Number,Tx_Number*Rx_Number);

for antenna=1:Tx_Number*Rx_Number

   for doppler=1:Doppler_Number

       %1.估计每个扫频周期时间内的基带复信号中频信号的幅值

       AmV(:,doppler)=dataR(:,doppler,antenna);

       

       %2.幅值时间序列和已知的初始相位时间序列得到复平面上的离散点      

%         figure(2);

%         plot(fft1d(:,doppler,1),'o');

%         title([num2str(doppler)]);

       

       %3.一个距离门上的所有多普勒点进行圆拟合

       xdataV=real(AmV(:,doppler));

       ydataV=imag(AmV(:,doppler));

       

       %最小二乘法拟合

       k0 = ones(1,3);

       F = @(k)(xdataV-k(1)).^2+(ydataV-k(2)).^2-k(3)^2;

       [k,resnorm] = lsqnonlin(F,k0);


       %k(1)是圆心的x坐标

       %k(2)是圆心的y坐标

       %k(3)的绝对值是圆的半径

       

%         r0 = [k(1),k(2)];

%         R = abs(k(3));

%         xx = k(1)-R:0.01*R:k(1)+R;

%         y1_h = sqrt(R.^2 - (xx - r0(1)).^2) + r0(2);

%         y2_h = -sqrt(R.^2 - (xx - r0(1)).^2) + r0(2);

%         figure(1);

%         plot(xx,y1_h,'b')

%         hold on

%         plot(xx,y2_h','b')

%         plot(xdata,ydata,'*r')

%         axis equal %axis square

       

       %4.修正补偿

       %获取拟合圆的圆心

       x=k(1);

       y=k(2);

       

       %将圆心移到零点(0,0)

       xdataV=xdataV-x;

       ydataV=ydataV-y;


       %5.得到新的点的时间序列相位

       dataV(:,doppler,antenna)=complex(xdataV,ydataV);

%         hold off;

   end

end


%% 1D FFT

fft1d= zeros(Range_Number,Doppler_Number,Tx_Number*Rx_Number);

for antenna =1:Tx_Number*Rx_Number

   for Range=1:Range_Number

       fft1d(Range,:,antenna) = fft((dataV(Range,:,antenna)));

   end

end


FFT1_mag=abs(fft1d(:,:,1));

figure();

mesh(FFT1_mag);

xlabel('采样点数');ylabel('脉冲数');zlabel('幅度');

title('圆拟合 1D-FFT结果');


%% 2D-FFT

fft2d= zeros(Range_Number,Doppler_Number,Tx_Number*Rx_Number);

for antenna=1:Tx_Number*Rx_Number

   for doppler=1:Doppler_Number

        fft2d(:,doppler,antenna) =fftshift( fft((fft1d(:,doppler,antenna))));  

   end

end

FFT2_mag=(abs(fft2d(:,:,1)));

figure();

mesh(X,Y,FFT2_mag);

xlabel('距离维(m)');ylabel('速度维(m/s)');zlabel('幅度');

title('圆拟合 2D-FFT结果');

%% END

3 运行结果

4 参考文献

[1]殷俊丽, 丁康利, 郝鹏飞. 基于MATLAB的雷达信号处理仿真[J]. 电子技术与软件工程, 2017(18):1.

博主简介:擅长智能优化算法神经网络预测信号处理元胞自动机图像处理路径规划无人机雷达通信无线传感器等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。



相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
阿里云实时数仓实战 - 用户行为数仓搭建
课程简介 1)学习搭建一个数据仓库的过程,理解数据在整个数仓架构的从采集、存储、计算、输出、展示的整个业务流程。 2)整个数仓体系完全搭建在阿里云架构上,理解并学会运用各个服务组件,了解各个组件之间如何配合联动。 3 )前置知识要求:熟练掌握 SQL 语法熟悉 Linux 命令,对 Hadoop 大数据体系有一定的了解   课程大纲 第一章 了解数据仓库概念 初步了解数据仓库是干什么的 第二章 按照企业开发的标准去搭建一个数据仓库 数据仓库的需求是什么 架构 怎么选型怎么购买服务器 第三章 数据生成模块 用户形成数据的一个准备 按照企业的标准,准备了十一张用户行为表 方便使用 第四章 采集模块的搭建 购买阿里云服务器 安装 JDK 安装 Flume 第五章 用户行为数据仓库 严格按照企业的标准开发 第六章 搭建业务数仓理论基础和对表的分类同步 第七章 业务数仓的搭建  业务行为数仓效果图  
相关文章
|
4月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
252 0
|
4月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
156 0
|
4月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
232 8
|
4月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
242 8
|
4月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
162 8
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
436 0
|
4月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
298 2
|
5月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
286 3
|
5月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
209 6
|
4月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
254 8

热门文章

最新文章