【数字信号处理2】IIR 滤波器设计

这篇具有很好参考价值的文章主要介绍了【数字信号处理2】IIR 滤波器设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

1.掌握冲激响应法和双线性变换法设计IIR滤波器的原理及具体设计方法,熟悉用双线性设计法设计低通、带通和高通IIR数字滤波器的计算机程序;
2.熟悉模拟Butterworth滤波器的设计,掌握冲激响应法和双线性变换法设计数字IIR滤波器的方法。

二、实验内容

1、不同阶次模拟巴特沃兹滤波器的频率响应
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能

结论:不同阶次的所对应的滤波器的幅度大值走向一样,但其过渡带存在明显的不同,阶次越高,滤波器的过渡带越小。
2、根据模拟滤波器指标,设计低通巴特沃兹滤波器
设计指标为:通带截止频率fp=6kHz,通带最大衰减ɑp =3dB,阻带截止频率fs= 14kHz,阻带最小衰减ɑs=32dB。
归一化之前的低通巴特沃兹滤波器的频率响应:
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能

归一化之后的低通巴特沃兹滤波器德品频率响应:
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能

3、已知模拟滤波器传输函数H(s)为
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能

按照不同采样频率Fs1=1.1Hz, Fs2=10.1Hz 使用脉冲响应不变法将H(s)转换为H(z)数字IIR滤波器。
不同采样采样频率对应的IIR滤波器的频率响应见下:iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能
结论:不同的采样频率设计出的IIR滤波器的频率响应是明显不一样的,采样频率越高,所设计出的频率计在pi处衰减的越大,再滤波器越接近模拟滤波器。

4 给定数字IIR指标,用脉冲响应不变法设计IIR。
在不同的Fs下,所得到的模拟滤波器和数字滤波器的频率响应见下:
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能

结论:在不同的采样频率下,有数字指标所得到模拟指标不一样,故导致所设计的模拟滤波器的频率响应不一样,但是,最后由模拟滤波器转化为的数字滤波器差别不大,是符合所给的数字指标的。

5、用双线性变换法设计IIR,并同脉冲响应不变法比较设计的结果。
数字滤波器指标要求如下:

iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能
iir数字滤波器设计,数字信号处理,通信,信号处理,算法,人工智能

将所得的数字滤波器的频率响应与题目给的要求对应,可以得之所设计的滤波器符合题目的要求。

三、实验结论

冲激响应不变法设计的滤波器在直流附近的数字域与模拟域的幅频特性相近,但双线性变换法是以严重的失真换取了频率的不混叠,这一般用于具有片段常数特性的滤波器。文章来源地址https://www.toymoban.com/news/detail-754645.html

附-实验源码

% 1 利用Matlab系统函数计算不同阶次的巴特沃兹滤波器频率响应
clc,clear all,close all;
freq_axis = [ 0: 0.01 :2 ];       %归一化的频率
N_array = [ 4 6 11 13 ];          %滤波器的阶次
figure(1);
for I=1:4
    N = N_array(I)
    [z p k] = buttap(N)      %获得6阶巴特沃兹滤波器的参数
    [b a] = zp2tf( z, p, k )%得到传递函数 tf:trans-function
    disp( [ 'N=' num2str(N) '极点:'  ] );
    p
    disp( [ 'N=' num2str(N),'零点:'  ] );
    z
    
    [H ] = freqs(b, a, freq_axis);
    magh = abs(H);
    
    subplot( 2, 2, I );
    plot( freq_axis, magh );
    axis( [0 2 0 1] );        %限制坐标轴
    xlabel( 'w/wc -- 归一化频率' );
    ylabel( '幅度谱' );
    title( ['巴特沃兹滤波器幅度谱 N=',num2str(N)] );
    
end

%2 根据提出模拟IIR的指标,计算IIR的阶次、系数等

J = sqrt(-1);
fp = 6e3;   %6KHz
alfa_p = 3; %最大通带衰减3dB
fs = 14e3;  %14KHz 阻带截止频率
alfa_s = 32;% 32dB

k_sp = sqrt(10^(alfa_p/10) - 1)/sqrt(10^(alfa_s/10) - 1)
lamda_sp = 2*pi*fs/(2*pi*fp)
N = ceil( -log(k_sp)/log(lamda_sp) )

p = zeros(1,N);
for I=1:N
    k = I-1;
    p(I) = exp( J*pi/2 + J*pi*(2*k+1)/2/N ) ;
end
z = [];     %表示无零点
[b1 a1] = zp2tf( z, p, 1 ); %得到传递函数 tf:trans-function

fc_freq =  fp* ( 10^(alfa_p/10)-1 )^(-1/2/N) ;  %3dB截至频率
figure(2);
freq_axis1 = [ 0:  50 :15e3 ] ;
[H1 ] = freqs(b1, a1, freq_axis1/fc_freq);      %对Wc作频率归一化
plot( freq_axis1 , 20*log10(abs(H1)) );

H1 = freqs(b1,a1,freq_axis);
figure(3);
plot( freq_axis,abs(H1) );
grid on
% 给出的模拟滤波器,使用脉冲响应不变法来设计数字IIR滤波器
% 验证不同采样频率fs对于数字IIR滤波器的影响
clc,clear all,close all;
J = sqrt(-1);
b = [0    0   0.5250];      %高次项系数在前
a = [1 0.5550 0.7552];
freq_analog = [0:0.5:30];    %模拟角频率!!! 
H_analog = freqs(b, a, freq_analog);    %计算在模拟角频率处的频响
figure(1);
subplot( 2,1,1 );
plot( freq_analog,20*log10(abs(H_analog)) );
xlabel( '角频率( rad/s )' ); ylabel( '幅频响应(dB)' );
title('模拟滤波器频率响应');

Fs1 = 1.1;    %1.1Hz采样率
[bz1, az1] = impinvar( b, a, Fs1 );    %根据模拟滤波器系数b,a,按照采样率fs转换为系数为bz,az的数字IIR滤波器

Fs2 = 10.1;  %10.1Hz采样频率
[bz2, az2] = impinvar( b, a, Fs2 );    %根据模拟滤波器系数b,a,按照采样率fs转换为系数为bz,az的数字IIR滤波器


freq_digital = [0:0.1:2*pi];
H_dig1 = freqz( bz1, az1, freq_digital );
H_dig2 = freqz( bz2, az2, freq_digital );
subplot(2,1,2);
plot( freq_digital, 20*log10(abs(H_dig1)) );
xlabel( '数字频率' ); ylabel( '幅频响应(dB)' );
title( '不同采样频率对于数字IIR频响的影响' );
hold on;
plot( freq_digital, 20*log10(abs(H_dig2)),'r' );
legend( ['Fs1=' num2str(Fs1) 'Hz'], ['Fs2=' num2str(Fs2) 'Hz'] );

clc,clear all,close all;
%1 给定数字滤波器指标,用脉冲响应不变法设计数字滤波器
J = sqrt(-1);
freq_p = 0.2*pi;        %通带截止频率0.2pi
alpha_p = 1;            %通带最大衰减1dB
freq_s = 0.3*pi;
alpha_s = 15;

Fs_array = [ 1 10 ];
Color_array =[ 'b','k' ];

for III=1:2
    color_used = Color_array(III);
    Fs = Fs_array(III);
    T = 1/Fs;
    analog_freq_p = freq_p/T   %数字频率w到模拟角频率W的转换 W = w/T;
    analog_freq_s = freq_s/T

    %根据模拟滤波器的指标求巴特沃兹滤波器的阶次
    k_sp = sqrt(10^(alpha_p/10) - 1)/sqrt(10^(alpha_s/10) - 1);
    lamda_sp = 2*pi*analog_freq_s/(2*pi*analog_freq_p);
    N = ceil( -log(k_sp)/log(lamda_sp) )
    Wc =  analog_freq_p* ( 10^(analog_freq_p/10)-1 )^(-1/2/N)  %3dB截至频率
   

    %查表,得到归一化的传输函数 或者根据公式得到极点p
    p = zeros(1,N);
    for I=1:N
        k = I-1;
        p(I) = exp( J*pi/2 + J*pi*(2*k+1)/2/N ) ;
    end

    % 根据得到的零点、极点得到归一化的传输函数H(p)
    z = [];     %表示无零点
    [b a] = zp2tf( z, p, 1 ); %得到传递函数 tf:trans-function,第三个参数为增益=1

    % 根据p=s/Wc 把归一化传输函数H(p)的系数转换为实际的模拟传输函数H(s)
    bs = zeros(1,length(b))  % H(s)的分子系数
    as = zeros(1,length(a))  % 对与N阶模拟滤波器,设其传输函数分子分母系数分别为bs,as
    temp =[N:-1:0]
    temp = Wc .^ temp
    bs = b ./ temp
    as = a ./ temp

    temp = as(1)
    as = as/temp             %验证与书上结果是否一致 
    bs = bs/temp
    figure(1);
    freq_analog =  linspace( 0, 2*analog_freq_s );
    H_analog = freqs(bs,as,freq_analog);
  
    plot( freq_analog, 20*log10(abs(H_analog)) ,color_used); grid on; hold on;
    xlabel( '模拟角频率(rad/s)' ); ylabel('幅频响应(dB)');
    title( '模拟滤波器的频率响应' );


    % 根据H(s)获得H(z),使用脉冲响应不变法
    [bz, az] = impinvar( bs, as, Fs );    %根据模拟滤波器系数b,a,按照采样率fs转换为系数为bz,az的数字IIR滤波器
    freq_digital = [0:0.1:2*pi-0.1];
    H = freqz( bz, az, freq_digital );
    figure(2); 
    plot( freq_digital/pi, 20*log10(abs(H)) ,color_used ); grid on; hold on;
    xlabel( '数字频率/pi'); ylabel( '幅频响应(dB)');
    title( '数字IIR滤波器频率响应' );
    
    a = 1;

end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 当采样频率变为2Hz时,求得出的数字IIR频率响应
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(1), legend( ['Fs=' num2str(Fs_array(1)) 'Hz'],['Fs=' num2str(Fs_array(2)) 'Hz'] );
figure(2), legend( ['Fs=' num2str(Fs_array(1)) 'Hz'],['Fs=' num2str(Fs_array(2)) 'Hz'] );

clc,clear all,close all;
%  给定数字滤波器指标
J = sqrt(-1);
freq_p = 0.3*pi;        %通带截止频率0.3pi
alpha_p = 1.1;            %通带最大衰减1.1dB
freq_s = 0.5*pi;
alpha_s = 16;

% 模拟低通指标
Fs = 1;
T = 1/Fs;
analog_freq_p = 2/T * tan(freq_p/2)
analog_freq_s = 2/T * tan(freq_s/2)

% 计算巴特沃兹滤波器的指标
k_sp = sqrt(10^(alpha_p/10) - 1)/sqrt(10^(alpha_s/10) - 1);
lamda_sp = 2*pi*analog_freq_s/(2*pi*analog_freq_p);
N = ceil( -log(k_sp)/log(lamda_sp) );
Wc =  analog_freq_p* ( 10^(analog_freq_p/10)-1 )^(-1/2/N) ;  %3dB截至频率
   
%查表,得到归一化的传输函数 或者根据公式得到极点p
p = zeros(1,N);
for I=1:N
    k = I-1;
    p(I) = exp( J*pi/2 + J*pi*(2*k+1)/2/N ) ;
end

% 根据得到的零点、极点得到归一化的传输函数H(p)
z = [];     %表示无零点
[b a] = zp2tf( z, p, 1 ); %得到传递函数 tf:trans-function,第三个参数为增益=1

% 根据p=s/Wc 把归一化传输函数H(p)的系数转换为实际的模拟传输函数H(s)
bs = zeros(1,length(b));  % H(s)的分子系数
as = zeros(1,length(a));  % 对与N阶模拟滤波器,设其传输函数分子分母系数分别为bs,as
temp =[N:-1:0];
temp = Wc .^ temp;
bs = b ./ temp;
as = a ./ temp;

temp = as(1);
as = as/temp;               %验证与书上结果是否一致 
bs = bs/temp;
figure(1);
freq_analog =  linspace( 0, 2*analog_freq_s );
H_analog = freqs(bs,as,freq_analog);

plot( freq_analog, 20*log10(abs(H_analog)) ,'k'); grid on; 
xlabel( '模拟角频率(rad/s)' ); ylabel('幅频响应(dB)');
title( '模拟滤波器的频率响应' );

% 根据模拟滤波器的传输函数得到数字滤波器的传输函数
[bz az] = bilinear( bs, as, Fs );   % 当模拟滤波器bs,as为其系数,用Fs采样。转换成数字IIR的传输函数bz,az
freq_digital = [0:0.1:2*pi-0.1];
H = freqz( bz, az, freq_digital );
figure(2); 
plot( freq_digital/pi, 20*log10(abs(H)) ,'k' ); grid on;  
xlabel( '数字频率/pi'); ylabel( '幅频响应(dB)');
title( '数字IIR滤波器频率响应' );

% 可以比较一下用脉冲响应不变法获得频率响应

到了这里,关于【数字信号处理2】IIR 滤波器设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA 的数字信号处理:Verilog 实现简单的 FIR 滤波器

    该项目介绍了如何使用 Verilog 实现具有预生成系数的简单 FIR 滤波器。 不起眼的 FIR 滤波器是 FPGA 数字信号处理中最基本的模块之一,因此了解如何将具有给定抽头数及其相应系数值的基本模块组合在一起非常重要。因此,在这个关于 FPGA 上 DSP 基础实用入门的教程中,将从一

    2024年02月09日
    浏览(49)
  • 数字信号处理-10-并行FIR滤波器MATLAB与FPGA实现

    本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的并行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了复现以及解读,并进行了仿真验证。 FIR滤波器的结构形式时,介绍了直接型、级联型、频率取样型和快速卷积型4种。在FPGA实现时,最常用的是最

    2023年04月09日
    浏览(49)
  • 数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发)

    利用MATLAB GUI设计平台,用窗函数法设计FIR数字滤波器,对所给出的含有噪声的声音信号进行数字滤波处理,得到降噪的声音信号,进行时域频域分析,同时分析不同窗函数的效果。将文件解压至一个目录下,运行m文件即可使用。 读取.wav音频文件函数 :audioread();(老版

    2024年02月08日
    浏览(55)
  • 数字信号处理翻转课堂笔记17——窗函数法设计FIR滤波器及matlab实现

    对应教材:《数字信号处理(第五版)》西安电子科技大学出版社,丁玉美、高西全著 (1)窗函数法设计FIR线性相位滤波器的原理; (2)加窗效应:加窗对滤波器特性的影响(难点); (3)典型窗函数及其主要特性和参数(重点); (4)窗函数法设计FIR滤波器的步骤(

    2024年01月16日
    浏览(53)
  • 数字信号处理|Matlab设计巴特沃斯低通滤波器(冲激响应不变法和双线性变换法)

    2.1频响图 系统函数 H 是一个复数,其图谱分为:幅度谱、相位谱 幅度谱 x轴:模拟频率f(数字频率w转化来)【 单位:赫兹Hz 】 y轴:|H1|幅度【一般用:20 * log10|H1|】【 单位:分贝dB 】  相位谱 x轴:模拟频率f(数字频率w转化来)【 单位:赫兹Hz 】 y轴:H1 的相位 2.2 各个频

    2023年04月08日
    浏览(42)
  • 现代信号处理——自适应滤波器(匹配滤波器)

    信号处理的目的是从噪声中提取信号,得到不受干扰影响的真正信号。采用的处理系统称为滤波器。 实时信号处理中,希望滤波器的参数可以根据系统或环境的变化进行更新,称为自适应滤波器。 滤波器的分类: 线性滤波器、非线性滤波器; FIR滤波器、IIR滤波器; 时域滤

    2023年04月27日
    浏览(69)
  • 现代信号处理——自适应滤波器(LMS自适应滤波器)

    一、自适应滤波简介 维纳滤波存在的问题: 适用于平稳随机信号的最佳滤波,对于非平稳的随机信号,其统计特性(相关函数)是随机的,因此无法估计其相关函数,此时的维纳滤波不适用; 维纳滤波器的参数是固定的,就不可能根据输入信号的变换去自动调整滤波器的参

    2024年02月01日
    浏览(49)
  • FPGA信号处理系列文章——深入浅出理解多相滤波器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 多相滤波是,按照相位均匀划分把数字滤波器的系统函数H(z)分解成若干个具有不同相位的组,形成多个分支,在每个分支上实现滤波。 采用多相滤波结构,可利用多个阶数较低的滤波来实现原本阶数较

    2024年02月05日
    浏览(75)
  • 【Python 算法】信号处理通过陷波滤波器准确去除工频干扰

    对于一个信号来说通常汇入工频噪声往往是因为交流电产生的电泳,影响了我们信号采集导致信号上存在工频干扰。 那么matlab去除工频干扰可以通过陷波滤波器实现。 在python中通常使用scipy.signal实现信号的处理。 Scipy的信号处理模块(scipy.signal)来创建自定义的陷波滤波器

    2024年02月08日
    浏览(49)
  • 【非欧几里得域信号的信号处理】使用经典信号处理和图信号处理在一维和二维欧几里得域信号上应用低通滤波器研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 2.1 算例1 2.2 算例2 2.3 算例3  2.4 算例4 

    2024年02月13日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包