我是靠谱客的博主 敏感书包,最近开发中收集的这篇文章主要介绍【雷达信号处理】脉冲多普勒PD及其MATLAB实现1 原理介绍2 实验内容3 MATLAB实现参考文献,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这是目录

  • 1 原理介绍
    • 1.1 脉冲多普勒过程
    • 1.2 信号模型
    • 1.3 PD的实现
    • 1.4 相参和非相参累积
  • 2 实验内容
    • 2.1 参数
  • 3 MATLAB实现
  • 参考文献

1 原理介绍

1.1 脉冲多普勒过程

我们用脉冲多普勒处理回波信号,目的是测量径向速度,提高信杂比和噪声比

脉冲多普勒(pulse doppler, PD)处理是多普勒处理的第二大类。在MTI处理中,快时间/慢时间数据矩阵在慢时间维度中经过高通滤波,产生一个新的快时间/慢时间数据序列,其中杂波分量已被衰减。
下图说明了PD处理的原理。
在这里插入图片描述下图显示了计算每个慢时间行数据的离散傅里叶变换(DFT)的每个慢时间行的频谱分析。
.因此,PD处理的结果是一个数据矩阵,其维度分别表示快时间和多普勒频率。

1.2 信号模型

  1. 发送信号——Chirp信号
    S ( t n ) = g [ t n , T p ] e j π β t n 2 S(t_n)=g[t_n,T_p]e^{j pi beta {t_n}^2} S(tn)=g[tn,Tp]ejπβtn2
    其中, T p T_p Tp为脉冲持续时间, β beta β为调频斜率, G [ t , T p ] G[t,T_p] G[t,Tp]为门宽为 T p T_p Tp的门函数。
  2. 接受信号
    s b ( m , t ) = g [ ( t − τ m ) / T p ] e j π β ( t − τ m ) 2 e − j 2 π f 0 τ m s_b(m,t)=g[(t-tau_m)/T_p]e^{j pi beta (t-tau_m)^2}e^{-j2pi f_0tau_m} sb(m,t)=g[(tτm)/Tp]ejπβ(tτm)2ej2πf0τm
    其中 f 0 f_0 f0为载波频率, τ m tau_m τm为第 m m m个脉冲的时延 τ m = 2 ∗ ( R 0 − m T r v ) / c tau_m=2*(R_0-mT_rv)/c τm=2(R0mTrv)/c

1.3 PD的实现

我们可以通过两个步骤实现PD处理。第一步是脉冲压缩,第二步是慢时间FFT。

  1. 步骤1:沿距离方向的脉冲压缩
    s 1 = A s i n c ( B ( t − τ 1 ) ) e − j 2 π f o τ 1 s_1=Asinc(B(t-tau_1))e^{-j2pi f_otau_1} s1=Asinc(B(tτ1))ej2πfoτ1 s 1 = A s i n c ( B ( t − τ 1 ) ) e − j 2 π f o τ 1 s_1=Asinc(B(t-tau_1))e^{-j2pi f_otau_1} s1=Asinc(B(tτ1))ej2πfoτ1 . . . . .... .... s N = A s i n c ( B ( t − τ N ) ) e − j 2 π f o τ N s_N=Asinc(B(t-tau_N))e^{-j2pi f_otau_N} sN=Asinc(B(tτN))ej2πfoτN

  2. 步骤2:沿着慢时间做FFT
    s p d = A s i n c ( B ( t − τ ) ) s i n c ( f − f d ) s_{pd}=Asinc(B(t-tau))sinc(f-f_d) spd=Asinc(B(tτ))sinc(ffd)

1.4 相参和非相参累积

  1. 相参积累
  • 没有信息丢失(振幅或相位)。
  • 增益是n,其中n是脉冲数。
  1. 非相参积累
  • 一些信息丢失(相位)
  • 增益约为KaTeX parse error: Expected '}', got 'EOF' at end of input: n^{0.8]
  • 在大多数情况下,相干积分比非相干积分更有效。

目标回波的波动会降低积分增益。

2 实验内容

2.1 参数

在这里插入图片描述

  1. PD 过程

步骤1:
在这里插入图片描述
步骤2:
在这里插入图片描述
2. 计算速度

根据上图2中最大值出现的位置,算得:
在这里插入图片描述

3 MATLAB实现

clear;
close all;
N = 4096;
fs = 100e6;
Ts = 1/fs;
R = 3000;
v = 60;
M = 64;    % PRT(脉冲重复周期)
f0 = 10e9;
Tp = 10e-6;
PRT = 100e-6;
PRF = 1/PRT;
B = 10e6;
c = 3e8;
lambda = c/f0;   % 波长
beta = B/Tp;     % 调频斜率
 
SNR = [0 10 20]; % SNR dB
sigma2 = 1./(10.^(SNR/10));   % 噪声方差
noise_index = 1;
 
echo = zeros(M,N);           % 回波
echo_noise = zeros(M,N);     % 回波+噪声
echo_fft = zeros(M,N);       % fft(回波)
echo_noise_fft = zeros(M,N); % fft 回波+噪声)
 
% 每个脉冲的延迟
tau = zeros(1,M);
for m = 1:M
    tau(1,m) = 2*(R-m*PRT*v)/c;
end
n = 0:N-1;
t = n*Ts;   % 时间范围
% 发送信号
x = rectpuls(t,Tp).*exp(1i*pi*beta*t.^2);
% 接收信号
y = zeros(M,N);
y_noise = zeros(M,N);
for m = 1:M
    tm = tau(m);
    y(m,:) = rectpuls((t-tm),Tp).*exp(1i*pi*beta*(t-tm).^2)*exp(-1i*2*pi*f0*tm);
    y_noise(m,:) = y(m,:) + sqrt(sigma2(noise_index)/2)*(randn(1,N)+1j*randn(1,N));
    % 脉冲压缩
    X = fftshift(fft(x,N));
    Y = fftshift(fft(y(m,:),N));
    Y_noise = fftshift(fft(y_noise(m,:),N));
    S = conj(X).*Y;
    S_noise = conj(X).*Y_noise;
    s = ifft(S);
    s_noise = ifft(S_noise);
    echo(m,:) = s;
    echo_noise(m,:) = s_noise;
end
% coherent sum
% 慢时间FFT
for n = 1:N
    echo_fft(:,n) = fftshift(fft(echo(:,n),M));
    echo_noise_fft(:,n) = fftshift(fft(echo_noise(:,n),M));
end


%% 画图
r = t*c/2;
f = linspace(-1*PRF/2,PRF/2,M);
v = f*c/f0/2;
xaxis = 1:M;
yaxis = r;
figure(1);
% mesh(t,xaxis,abs(echo));
% xlabel('range(m)'),ylabel('time'),zlabel('amplitude');
imagesc(r,(1:M),abs(echo));
title('Pulse Compression');
xlabel('range(m)');
ylabel('slow time');

figure(2);
imagesc(r,v,abs(echo_fft));
% mesh(r,v,abs(echo_fft));
% xlabel('range(m)'),ylabel('doppler'),zlabel('amplitude');
% title('Range-Dopple Heat Map');
title('Pulse Doppler Processing');
xlabel('range(m)');
ylabel('velocity(m/s)');

%% 计算过程
fft_num_m = M;
f_m = (0:fft_num_m-1)*(PRF/fft_num_m);
[column,row]=find(abs(echo_fft)==max(max(abs(echo_fft)))); %row->矩阵列值 column->矩阵行值,所以转置了一下
C = [];
D = [];
% 距离
for a = row-3:row+3
    amp = abs(echo_fft(column-1,a)); % 取幅度值
    C(a) = amp*t(a)*c/2;             %sum(幅度(i)*距离(i))】
    D(a) = amp;% 幅度值
end
d0 = sum(C)/sum(D); 
%Velocity
E = [];
F = [];
for a_v = column - 3:column + 3%doppler相上 最大值的左右各3个点共7点
    amp_v = abs(echo_fft(a_v,(row-1)));
    E(a_v) = amp_v*f_m(a_v)*lambda/2;
    F(a_v) = amp_v;
end
v0 = sum(E)/sum(F);
fprintf('无噪声时距离:%fm/sn',d0);
fprintf('无噪声时速度:%fm/sn',v0);
% 计算增益
% 1.相参积累
[~,index] = max(max(echo_noise));
P_noise = sum(sum(abs(echo_noise(index-10:index-1)).^2)+abs(echo_noise(index+1:index+10)).^2);
co_g = abs(max(max(echo_noise_fft)))^2/(P_noise);
fprintf('相参积累增益: %f dBn',10*log10(co_g));
% 2.非相参积累
[~,index] = max(transpose(echo_noise));
P_n = sum(sum(abs(echo_noise(index-10:index-1)).^2)+abs(echo_noise(index+1:index+10)).^2);
nco_g = sum(abs(max(transpose(echo_noise_fft))).^2)/M/(P_n);
fprintf('非相参积累增益:%f dBn',10*log10(nco_g));

参考文献

《雷达信号处理》

最后

以上就是敏感书包为你收集整理的【雷达信号处理】脉冲多普勒PD及其MATLAB实现1 原理介绍2 实验内容3 MATLAB实现参考文献的全部内容,希望文章能够帮你解决【雷达信号处理】脉冲多普勒PD及其MATLAB实现1 原理介绍2 实验内容3 MATLAB实现参考文献所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部