精华内容
下载资源
问答
  • 匹配滤波matlab实现
    千次阅读
    2021-11-27 09:22:54

    匹配滤波(脉冲压缩) matlab代码,亲测可用

    匹配滤波(matched filtering)是最佳滤波的一种,当输入信号具有某一特殊波形时,其输出信噪比达到最大。

    匹配滤波器的相频特性和输入信号正好完全相反。这样,通过匹配滤波器后,信号的相位为0,正好能实现信号时域上的相干叠加。而噪声的相位是随机的,只能实现非相干叠加。这样,信号通过是其强度比噪声强一个相干项的大小,这样在时域上保证了输出信噪比的最大。

    在形式上,一个匹配滤波器由以按时间反序排列的输入信号构成。且滤波器的振幅特性与信号的振幅谱一致。因此,对信号的匹配滤波相当于对信号进行互相关运算。地震勘探使用可控震源时,对得到的记录所进行的变换就是匹配滤波的实例。

    在实际工程中,匹配滤波器还是用的比较广泛


    上代码,大家记得点个赞啊,不然我都没有动力更新博文了,(收藏了你们也不会再看的)

    %%线性调频信号经过匹配滤波
    T=10e-6;                                   %脉冲持续时间10us
    B=30e6;                                    %线性调频信号的带宽30MHz
    K=B/T;                                     %调频斜率
    Fs=10*B;Ts=1/Fs;                     %采样频率和采样间隔
    N=T/Ts;
    t=linspace(-T/2,T/2,N);
    St=exp(j*pi*K*t.^2);                     %线性调频信号
    Ht=exp(-j*pi*K*t.^2);                    %匹配滤波
    Sot=conv(St,Ht);                         %线性调频信号经过匹配滤波
    
    subplot(411)
    L=2*N-1;
    t1=linspace(-T,T,L);
    Z=abs(Sot);
    Z=Z/max(Z);             %归一化
    Z=20*log10(Z+1e-6);
    Z1=abs(sinc(B.*t1));                   %辛格函数
    Z1=20*log10(Z1+1e-6);
    t1=t1*B;                                         
    plot(t1,Z,t1,Z1,'r.');
    axis([-15,15,-50,inf]);grid on;
    legend('匹配滤波','辛格');
    xlabel('时间/s ');
    ylabel('幅值/dB');
    title('线性调频信号经过匹配滤波');
    
    subplot(412)                              %展开
    N0=3*Fs/B;
    t2=-N0*Ts:Ts:N0*Ts;
    t2=B*t2;
    plot(t2,Z(N-N0:N+N0),t2,Z1(N-N0:N+N0),'r.');
    axis([-inf,inf,-50,inf]);grid on;
    set(gca,'Ytick',[-13.4,-4,0],'Xtick',[-3,-2,-1,-0.5,0,0.5,1,2,3]);
    xlabel('时间/s');
    ylabel('幅度/dB');
    title('线性调频信号经过匹配滤波(补零展开之后)');
    
    
     Z_value = Z(2950:3050)
    subplot(413)
    plot(Z_value);
    grid on;
     [value, locmax ] = max( Z_value(1:40));
     locmax
     value
    
    subplot(414)
    plot(Z);
    sum = 0;
    for mm = 1:length(Z)
        sum = sum +Z(mm)
        
    end
    
    sum = -sum;
    sum
    
    更多相关内容
  • matlab文件以LFM信号为例详细介绍了信号匹配滤波的仿真方法和实现,包括时域方法和频域方法
  • matlab匹配滤波代码 你好 :waving_hand: ,我是布莱恩(Bryan) 博客 -[ 刷新页面进行新玩笑! 语言能力 图书馆 构架 资料库 测验 其他 ➤电子邮件 ➤电话 ➤与我联系: | 支持: 关于我 ➤ 我写以下文章: 法典 ...
  • 匹配滤波器原理及matlab实现 关于匹配滤波器的原理以及其matlab实现方式的详细过程
  • 利用 Matlab 提供的 MatchedFilter 对象实现了对输入线性FM信号的匹配滤波
  • 匹配滤波matlab源程序匹配滤波matlab源程序
  • 通信、雷达专业;模拟线性调频匹配滤波,模拟白噪声通过匹配滤波器。
  • 该文件主要实现了FFT-IFFT法实现LFM信号匹配滤波。 仿真要求: 信号时宽为10us、带宽为30MHz、波形为LFM信号(单边扫频,即频率范围[0,30MHz])、采样率为80MHz
  • 匹配滤波器 波束形成和线性调频型号matlab程序
  • 利用matlab仿真产生线性调频信号,并实现线性调频信号的匹配滤波
  • 基于matlab使用三维块匹配滤波BM3D算法实现图像去噪
  • 匹配滤波器实现matlab代码,包括输出信噪比的计算,输出波形,匹配滤波器的计算
  • 匹配滤波matlab仿真代码 对于了解匹配滤波原理很有用
  • 匹配滤波matlab仿真

    2021-05-27 22:53:06
    匹配滤波matlab仿真代码 对于了解匹配滤波原理有用
  • 雷达线性调频下的匹配滤波以及脉冲压缩作用的仿真分析,里面包含原理讲解,公式推导,matlab仿真及分析
  • MATLAB中使用匹配滤波器实现脉冲压缩
  • 不同类型加窗后对LFM信号匹配滤波后峰值旁瓣比和隔离度的matlab仿真+含代码操作演示视频 运行注意事项:使用matlab2021a或者更高版本测试,运行里面的Runme.m文件,不要直接运行子函数文件。运行时注意matlab左侧...
  • 匹配滤波matlab

    2018-04-21 11:12:30
    运用matlab实现匹配滤波,文件中有匹配滤波的文档说明
  • 快速实现GFDM和C-FBMC调制/解调,分别包括时域和频域的迫零(ZF)和匹配滤波(MF)均衡; 为OFDM信道估计中使用的压缩感测方法计算字典的功能; 增加信道效应,施加宽带多普勒失真的功能; 通过线性调频Z变换(CZT)...
  • matlab实现线性调频信号LFM的匹配滤波算法
  • matlab仿真:FFT实现匹配滤波

    千次阅读 2021-11-09 16:54:10
    仿真匹配滤波器的FFT-IFFT的实现,采用矩形脉冲信号,观察滤波前后的波形,分析匹配滤波器对矩形脉冲的压缩前后的性质。

    仿真匹配滤波器的FFT-IFFT的实现,采用矩形脉冲信号,观察滤波前后的波形,分析匹配滤波器对矩形脉冲的压缩前后的性质。

             FFT实现匹配滤波的原理图如下图所示,对x[n]和h[n]补零,然后做N点FFT,相乘后做ifft,得到的y[n]就是滤波后的信号,这其实就是一个FFT实现线性卷积的过程,对x[n]做匹配滤波也就是与滤波器冲激函数做卷积运算。

    1、产生矩形脉冲信号,这里采用正弦波与脉冲信号进行调制,载波信号与脉冲信号相乘,得到调制后的矩形脉冲,下图为调制的信号与其频谱图,这里的频谱图为正弦波的频谱图,为单根谱线,信号频率为400Hz,由于未做fftshift,没有把零频分量移到原点,因此100Hz也有根谱线。

    2、做匹配滤波器的冲激响应,由于该信号的对称性,此时的匹配滤波器的冲激响应,等于原信号在一个周期的值,因此直接写出匹配滤波器的冲激响应,当然也可以用信号的反褶共轭得到冲激响应。

    h=conj(fliplr(s));  %匹配滤波起的系统函数

     3、先用线性卷积来实现匹配滤波,对s(t)和h(t)直接做卷积运算后截断,得到输出信号。

    clin = conv(s,h);
    clin_1 = clin(1:250);

    4、用FFT 实现匹配滤波,如上述原理图 所示,补零、FTT、IFFT、截断后得到输出信号。

    输出信号如下图所示,上面为卷积运算得到的输出信号,下面为FFT得到的输出信号。

    N1=length(s);
    N2=length(h);
    N=N1+N2-1;
    
    XK=fft(s,N);
    HK=fft(h,N);
    YK=XK.*HK;
    yt=ifft(YK,N);
    
    yt1=yt(1:250);

    从图中我们可以看出,矩形脉冲信号经过匹配滤波后,信号的时宽并没有减小, 对于雷达信号来讲,经过匹配滤波后,没有提高分辨率,脉冲压缩比为1,没有信噪比的提升。

    clc
    clear
    close all
    
    Fs=500;        %采样率500Hz
    Ts = 1/Fs;
    t0=0.1;      
    t = 0:Ts:0.5-Ts;   
    %载波信号 
    x =( sin(2*pi*400*t)+1)/2; %+ sin(2*pi*20*t);
    figure(1)
    subplot (3 ,1,1);
    plot(t,x)
    xlabel('Time (seconds)')
    ylabel('Amplitude')
    title('载波/脉冲信号')
    hold on
    
    %编码信号
    j = (square(2*pi*5*t)+1)/2; 
    plot(t,j);
    hold off
    
    s=x.*j;
    subplot (3 ,1,2);
    plot(t,s)
    xlabel('Time (seconds)')
    ylabel('Amplitude')
    title('调制信号')
    
    y = fft(x);   
    fs = 1/Ts;
    f = (0:length(y)-1)*fs/length(y);
    subplot (3 ,1,3);
    plot(f,abs(y))
    xlabel('Frequency (Hz)')
    
    
    %MF响应函数
    t2= 0:Ts:0.1-Ts;  
    h=( sin(2*pi*400*t2)+1)/2; 
    figure(2);
    plot(t2,h)
    xlabel('Time (seconds)')
    ylabel('Amplitude')
    title('FM响应')
    
    
    %线性卷积
    clin = conv(s,h);
    clin_1 = clin(1:250);
    figure(3);
    subplot (2 ,1,1);
    plot(t,clin_1)
    xlabel('Time (seconds)')
    ylabel('Amplitude')
    title('线性卷积 ')
    
    %用FFT实现线性卷积。
    
    N1=length(s);
    N2=length(h);
    N=N1+N2-1;
    
    XK=fft(s,N);
    HK=fft(h,N);
    YK=XK.*HK;
    yt=ifft(YK,N);
    
    yt1=yt(1:250);
    subplot (2 ,1,2);
    plot(t,yt1)
    xlabel('Time (seconds)')
    ylabel('Amplitude')
    title('FFT进行匹配滤波')
    

    展开全文
  • 四种方法实现匹配滤波,时域,频域,卷积等matlab
  • 匹配滤波源码,详情见http://blog.csdn.net/u013288466/article/details/66473284
  • 匹配滤波,用于雷达信号的匹配滤波,是雷达中基本的滤波方式
  • LFM回波信号进行匹配滤波,在雷达数字处理中实现宽发窄收
  • 匹配滤波器的MATLAB实现

    千次阅读 2021-05-17 16:17:59
    文章目录1、LFM信号2、匹配滤波器的实现2.1 基本方式2.2 MATLAB实现 1、LFM信号 线性调频信号在SAR系统中十分重要,其频率是时间的线性函数。这种信号用于发射,以得到均匀的信号带宽,其在接收信号中则来自传感器...

    本博参考 合成孔径雷达-算法与实现 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));
    

    仿真结果


    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • %%用与发送端相同的根升余弦匹配滤波 yt=y2((size(yf)+1)/2:8:end);%%匹配滤波后抽取 figure(2); stem(x(1:40)); grid;title(‘原始信号输出‘); figure(3); plot(y1(1:100));grid;title(‘成型信号输出‘); figure...
  • matlab匹配滤波代码使用RANSAC的光流和拼接 光流 使用MATLAB实现了Lucas-Kanade光流算法,以确定3组不同图像的光流。 HTML中发布的算法代码如下。 该文件另附以供参考。 阈值0.01用于滤除某些特征值。 应该注意的是...
  • matlab匹配滤波代码在线快速阅读能力评估(ROAR) 用词汇决策任务测量网络浏览器中的阅读能力 Jason D. Yeatman,Kenny An Tang,Patrick M.Donnelly,Maya Yablonski,Maha Ramamurthy,Iliana I.Karipidis,Sendy ...
  • 线性调频信号的仿真,及匹配滤波MATLAB代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,715
精华内容 1,886
关键字:

匹配滤波matlab实现

友情链接: test.rar