匹配滤波器的MATLAB实现

本博参考 合成孔径雷达-算法与实现 3.4节 匹配滤波器的实现。如有错漏,还请各位大佬指正


1、LFM信号

线性调频信号在SAR系统中十分重要,其频率是时间的线性函数。这种信号用于发射,以得到均匀的信号带宽,其在接收信号中则来自传感器运动。
时域表达式为:

s ( t ) = rect ⁡ ( t T ) exp ⁡ { j π K t 2 } s(t)=\operatorname{rect}\left(\frac{t}{T}\right) \exp \left\{j \pi K t^{2}\right\} s(t)=rect(Tt)exp{jπKt2}

频谱的简略表达式为(忽略常数振幅和相位正负pi/4):

G ( f ) = rect ⁡ ( f K T ) exp ⁡ { − j π f 2 K } G(f)=\operatorname{rect}\left(\frac{f}{K T}\right) \exp \left\{-j \pi \frac{f^{2}}{K}\right\} G(f)=rect(KTf)exp{jπKf2}

2、匹配滤波器的实现

2.1 基本方式

匹配滤波器的生成方法一般有如下几种(基于基带信号):

  1. 将时间反褶后的复制脉冲(发射复制脉冲)取复共轭,计算补零DFT;
  2. 复制脉冲补零后进行DFT,对结果取复共轭(无时间反褶);
  3. 根据设定的线性调频特性,直接在频域生成匹配滤波器。

前两种方式中复制信号在进行FFT前要补零至选定的长度(Nfft),由于弃置区等于复制信号长度(减1),Nfft的长度应倍数于信号长度。SAR中的匹配滤波器一般比较长,通常在频域实现。

弃置区位置

  1. 方式1:在复制信号末端补零,则循环卷积中弃置区位于IDFT输出序列的起始;
  2. 方式2:同样在复制信号末端补零,但其循环卷积中弃置区位于IDFT输出序列的末端;
  3. 方式3:弃置区分则于IDFT输出序列的两则。

2.2 MATLAB实现

方式1:将发射信号时间反褶后取共轭得到h(t),再与信号补零后的FFT在频域相乘,最后取IFFT。

// 方式1
ht=conj(fliplr(st));
Hf=fft(ht,Nfft);
Sf=fft(st,Nfft);
s=ifft(Hf.*Sf);

方式2:将发射脉冲补零后进行FFT,再取共轭(无需反褶),与信号补零后的FFT在频域相乘,最后IFFT。

// 方式2
Hf=conj(fft(st,Nfft));
Sf=fft(st,Nfft);
s=ifft(Hf.*Sf);

方式3:直接在频域生成匹配滤波器

// 方式三
Hf=exp(1i*pi*f.^2/K);
Sf=fft(st,Nfft);
s=ifft(Hf.*Sf);

注: conv函数计算的是两个序列的线性卷积,而fft计算的是序列的循环卷积,Nfft满足下式时可以无差别地使用循环卷积计算线性卷积。
,

N f f t > = N 1 + N 2 − 1 Nfft>=N1+N2-1 Nfft>=N1+N21

N1、N2分别表示两个信号删去左右两边零值后的长度。

MATLAB 实现示例

// Match_filter
close all;clear all;clc
%%线性调频信号
T=42e-6;
B=17.2e6;
Fs=18.5e6;
K=B/T;
N=round(T/(1/Fs));
t=linspace(-T/2,T/2,N);
st=( abs(t) < T/2 ) .*exp(1j*pi*K.*t.^2);
%%时域匹配滤波
ht=conj(fliplr(st));
y1=conv(st,ht);
Nfft=N+N-1;
t1=linspace(-T/2,T/2,Nfft);
figure(1);
subplot(311),plot(t,real(st));
subplot(312),plot(t,imag(st));
subplot(313),plot(t1,abs(y1));
%%方式1
Nfft2=2*N;
freqz=linspace(-Fs/2,Fs/2,Nfft2);
t2=linspace(-T/2,T/2,Nfft2);
Hf1=fftshift(fft(ht,Nfft2));
Sf1=fftshift(fft(st,Nfft2));
y2=ifft(Hf1.*Sf1);
figure(2);
subplot(311),plot(freqz,abs(Hf1));
subplot(312),plot(freqz,abs(Sf1));
subplot(313),plot(freqz,abs(y2));
%%方式2
Hf2=fftshift(conj(fft(st,Nfft2)));
y3=fftshift(ifft(Sf1.*Hf2));
figure(3);
plot(t2,abs(y3));

仿真结果


在这里插入图片描述

在这里插入图片描述

  • 21
    点赞
  • 229
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值