自适应IIR格型滤波器的Matlab实现

  • 概述

  • 在现有的众多抑制窄带干扰的信号处理手段中,时域自适应陷波干扰抑制技术具有实现简单、抗干扰性能好等优点。IIR陷波器按照结构可以分为直接型和格型两种。相比自适应直接型IIR陷波器,自适应格型IIR陷波器不仅可以准确地控制滤波器的陷波频率,也可以准确地调整陷波器的带宽。
  • 传递函数

  • 二阶自适应IIR格型陷波器的传递函数H(z)为:

  • 自适应IIR格型滤波器的Matlab实现_第1张图片

     其中α与陷波带宽有关,β与陷波频率有关;对应的结构如下图所示:

  • 自适应IIR格型滤波器的Matlab实现_第2张图片

  • Matlab算法实现

  • 自适应IIR格型滤波器的Matlab实现_第3张图片

  •  思路:通过rife算法估计出干扰频率,采用自适应滤波器IIR算法,滤除正弦波干扰信号

  • 参考部分源码:

  • clc,clear,close all;
    f=200;                          %信号频率为
    A=4;                            %设置正弦波幅值
    N=1024;                         %采样点个数
    n=0:N-1;                        %采样序列
    fs=2000;                        %采样频率为  fs=2K
    ts=1/fs;                        %采样间隔
    T=N*ts;                         %采样时间
    
    m=-fs/2:(fs/N):(fs/2-(fs/N));   %其中fs/N为采样分辨率
    % % % 
    f1=20;
    s_n=sin(2*pi*f1*n*ts); 
    subplot(4,2,1);plot(n*ts,s_n); title('原始信号:sin(2*pi*f1*n*ts)');
    subplot(4,2,2);plot(m,abs(fftshift(fft(s_n))));  title('频谱分析');
    
    SNR=10;
    s_n=awgn(s_n,SNR);                %SNR参数,可参考awgn函数
    subplot(4,2,3);plot(n*ts,s_n); title('原始信号+高斯噪声');
    subplot(4,2,4);plot(m,abs(fftshift(fft(s_n))));  title('频谱分析');
    
    i_n=A*sin(2*pi*f*n*ts);           %生成正弦波信号,干扰信号
    xn=s_n+i_n;                       %添加干扰信号
    
    subplot(4,2,5);plot(n*ts,xn); title('原始信号+高斯噪声+窄带干扰')
    subplot(4,2,6);plot(m,abs(fftshift(fft(xn))));  title('频谱分析');
    
    
    
    
    %%%使用rife算法进行频率估计
    yw=abs(fft(xn));                                    %傅里叶变换
    % subplot(4,1,4);plot(n,yw);  
    [valueMax,posMax] = max(yw(1:N));                   %得到谱线最大值与坐标
    if( yw(posMax+1) >= yw(posMax-1))                   %判断r的值    
        r=1;
    else
        r=-1;
    end

    运行结果:

  • 其中在频谱上200Hz高峰是干扰信号,20Hz的高峰是有用信号;通过4-2-6、4-2-8图片对比可以看到200Hz的干扰信号滤除了,保留了20Hz的有用信号。

  • 自适应IIR格型滤波器的Matlab实现_第4张图片

    参考源码链接:

  • 自适应IIR格型滤波器的Matlab实现-嵌入式文档类资源-CSDN下载

你可能感兴趣的:(matlab,开发语言)