【雷达】基于圆拟合(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代码问题可私信交流。

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
抱歉,我不是一个编程语言专家,无法为您提供完整的基于 MATLAB 的 CDIF 算法雷达信号分选代码。但我可以提供一些基本的步骤和思路,希望能帮助您开始编写代码。 CDIF(Constant False Alarm Rate and Doppler Interference Filter)算法是一种常数虚警率和多普勒干扰过滤器,用于雷达信号处理。其主要思想是通过对雷达信号进行时频分析,确定信号的频率和多普勒速度,进而滤除多普勒干扰和杂波。 以下是一些可能有用的步骤和函数: 1. 读取雷达信号数据。您需要使用 MATLAB 的一些函数来读取雷达信号数据,例如 load、importdata 或 csvread。 2. 预处理数据。在进行 CDIF 算法之前,您可能需要对信号进行一些预处理,例如去除基线漂移、滤波和归一化等操作。您可以使用 MATLAB 的一些信号处理函数来完成这些操作,例如 detrend、filtfilt、medfilt1 和 normalize。 3. 进行时频分析。CDIF 算法的核心是时频分析,您可以使用 MATLAB 的一些函数来完成这些操作,例如 spectrogram、cwt 和 stft。 4. 确定信号的频率和多普勒速度。通过时频分析,您可以确定信号的频率和多普勒速度,这将有助于滤除多普勒干扰和杂波。您可以使用 MATLAB 的一些函数来完成这些操作,例如 findpeaks、peak2peak 和 findchangepts。 5. 实现 CDIF 算法。基于上述步骤和函数,您可以编写 CDIF 算法代码,并对雷达信号进行分选。 希望这些信息能帮助您开始编写基于 MATLAB 的 CDIF 算法雷达信号分选代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

matlab科研助手

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

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

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

打赏作者

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

抵扣说明:

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

余额充值