[Matlab]FIR滤波器设计:(线性相位FIR滤波器的特性)

​ FIR滤波器能够在保证幅度特性满足技术要求的同时,容易实现严格的线性相位特性,且FIR滤波器的单位抽样响应是有限长的,因而滤波器一定是稳定的,而且可以用快速傅里叶变换算法实现,大大提高了运算速率。

​ 同时只要经过一定的延时,任何非因果有限长序列都能变成因果的有限长序列,所以系统总能用因果系统来实现。但是FIR滤波器必须用很长的冲击响应滤波器才能很好的逼近瑞截至的滤波器,需要很大的运算量:而且要取得很好的衰减特性,需要较高的阶次。

线性相位FIR滤波器相位条件:
  • FIR滤波器具有第一类线性相位的充分必要条件如下:

    单位抽样响应h(n)h(n)h(n)关于群延时 τ偶称对,即满足:

    ​ h(n)=h(N−1−n)(0<=n<=N−1)h(n) = h(N-1-n) (0<=n<=N-1)h(n)=h(N−1−n)(0<=n<=N−1)

    ​ τ=(N−1)/2τ = (N-1)/2τ=(N−1)/2

​ 满足偶对称条件的FIR滤波器分别为I型线性相位滤波器和II型线性相位滤波器。

  • FIR滤波器具有第二类线性相位的充分必要条件如下:

    单位抽样响应h(n)h(n)h(n)关于群延时 τ偶对称,即满足:

    ​ h(n)=h(N−1−n)(0<=n<=N−1)h(n) = h(N-1-n) (0<=n<=N-1)h(n)=h(N−1−n)(0<=n<=N−1)

    ​ β=±(π/2)β= ±(π/2)β=±(π/2)

    ​ τ=(N−1)/2τ = (N-1)/2τ=(N−1)/2

    把满足奇对称条件的FIR滤波器分别为III型线性相位滤波器和IV型线性相位滤波器。

线性相位滤波器的分类:
  1. I型线性相位滤波器

    I型线性相位滤波器幅度函数和相位函数的特点:

    • 幅度函数对τ=(N−1)/2τ = (N-1)/2τ=(N−1)/2偶对称,同时对w=0,π,2πw= 0,π,2πw=0,π,2π也呈现出偶对称。
    • 相位函数为准确的线性相位。
  2. II型线性相位滤波器

    II型线性相位滤波器幅度函数和相位函数的特点:

    • 当w=πw= πw=π时,H(π)=0H(π)=0H(π)=0,也就是说H(z)H(z)H(z)在z=−1z=-1z=−1处有必然一个零点。
    • H(w)H(w)H(w)对w=πw=πw=π呈现奇对称,对w=0,2πw= 0,2πw=0,2π成偶对称。
    • 相位函数的特点同I型线性相位滤波器
  3. III型线性相位滤波器

    III型线性相位滤波器幅度函数和相位函数的特点:

    • 当w=0,π,2πw= 0,π,2πw=0,π,2π时,H(π)=0H(π)=0H(π)=0,也就是说H(z)H(z)H(z)在z=±1z=±1z=±1处有必然一个零点。
    • H(w)H(w)H(w)对w=0,π,2πw= 0,π,2πw=0,π,2π呈现奇对称。
    • 相位函数的特点:既是准确的线性相位,有包括π/2π/2π/2的相移,所以又称为π/2π/2π/2移相器或者称正交变换网络。
  4. IV型线性相位滤波器

    IV型线性相位滤波器幅度函数和相位函数的特点:

    • 当w=0,πw= 0,πw=0,π时,H(π)=0H(π)=0H(π)=0,也就是说H(z)H(z)H(z)在z=±1z=±1z=±1处有必然一个零点。
    • H(w)H(w)H(w)对w=πw=πw=π呈现偶对称,对w=0,2πw= 0,2πw=0,2π成奇对称。
    • 相位函数的特点:既是准确的线性相位,有包括π/2π/2π/2的相移,所以又称为π/2π/2π/2移相器或者称正交变换网络。
    • 相位函数的特点同III型线性相位滤波器
I型线性相位滤波器设计:

上述滤波器可以通过下面的matlab程序设计实现:

function [Hr,w,a,L]=hr_type1(h);
%计算所设计的1型滤波器的振幅响应
%Hr=振幅响应
%a=1型滤波器的系数
%L=Hr的阶次
%h=1型滤波器的单位冲击响应
M=length(h);
L=(M-1)/2;
a=[h(L+1) 2*h(L:-1:1)];
n=[0:1:L];
w=[0:1:500]'*2*pi/500;
Hr=cos(w*n)*a';

设计I型线性相位滤波器:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%I型线性相位滤波器设计:
clear;
close all;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
h=[-4 3 -5 -2  5 7 5 -2 -1 8 -3]
M=length(h);
n=0:M-1;
[Hr,w,a,L]=hr_type1(h);
subplot(2,2,1);
stem(n,h);
xlabel('n');
ylabel('h(n)');
title('脉冲响应')
grid on
subplot(2,2,3);
stem(0:L,a);
xlabel('n');
ylabel('a(n)');
title('a(n)系数')
grid on
subplot(2,2,2);
plot(w/pi,Hr);
xlabel('频率单位pi');ylabel('Hr');
title('I型幅度响应')
grid on
subplot(2,2,4);
pzplotz(h,1);
grid on%在z平面上画出零极点分布图生产m文件存放当前文件夹
function pzplotz(b,a)
%pzplotz(b,a)按给定系数向量b,a在z平面上画出零极点分布图
% b - 分子多项式系数向量
% a - 分母多项式系数向量
% a,b向量可从z的最高幂降幂排至z^0,也可由z^0开始,按z^-1的升幂排至z的最负幂.
N = length(a);
M = length(b);
pz = []; zz = [];
if (N > M)
zz = zeros((N-M),1);
elseif (M > N)
pz = zeros((M-N),1);
end
pz = [pz;roots(a)];
zz = [zz;roots(b)];
pzr = real(pz)';
pzi = imag(pz)';
zzr = real(zz)';
zzi = imag(zz)';
rzmin = min([pzr,zzr,-1])-0.5;
rzmax = max([pzr,zzr,1])+0.5;
izmin = min([pzi,zzi,-1])-0.5;
izmax = max([pzi,zzi,1])+0.5;
zmin = min([rzmin,izmin]);
zmax = max([rzmax,izmax]);
zmm=max(abs([zmin,zmax]));
uc=exp(j*2*pi*[0:1:500]/500);
plot(real(uc),imag(uc),'b',[-zmm,zmm],[0,0],'b',[0,0],[-zmm,zmm],'b');
axis([-zmm,zmm,-zmm,zmm]);
axis('square');
hold on
plot(zzr,zzi,'bo',pzr,pzi,'rx');
hold on
text(zmm*1.1,zmm*0.95,'z-平面')
xlabel('实轴');ylabel('虚轴');title('零极点图')

II型线性相位滤波器设计:

上述滤波器可以通过下面的matlab程序设计实现:

function [Hr,w,b,L]=hr_type2(h)
%计算所设计的2型滤波器的振幅响应
%Hr=振幅响应
%b=2型滤波器的系数
%L=Hr的阶次
%h=2型滤波器的单位冲击响应
M=length(h);
L=M/2;
b= 2*h(L:-1:1);
n=[1:1:L];
n=n-0.5;
w=[0:1:500]'*2*pi/500;
Hr=cos(w*n)*b';

设计II型线性相位滤波器:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%2型线性相位滤波器设计:
clear;
close all;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
h=[-3 2 -1 -2  5 6 5 -2 -1 1 -3]
M=length(h);
n=0:M-1;
[Hr,w,b,L]=hr_type2(h);
subplot(2,2,1);
stem(n,h);
xlabel('n');
ylabel('h(n)');
title('脉冲响应')
grid on
subplot(2,2,3);
stem(1:L,b);
xlabel('n');
ylabel('a(n)');
title('a(n)系数')
grid on
subplot(2,2,2);
plot(w/pi,Hr);
xlabel('频率单位pi');ylabel('Hr');
title('II型幅度响应')
grid on
subplot(2,2,4);
pzplotz(h,1);
grid on

III型线性相位滤波器设计:

上述滤波器可以通过下面的matlab程序设计实现:

function [Hr,w,c,L]=hr_type3(h);
%计算所设计的3型滤波器的振幅响应
%Hr=振幅响应
%b=3型滤波器的系数
%L=Hr的阶次
%h=3型滤波器的单位冲击响应
M=length(h);
L=(M-1)/2;
c= [2*h(L+1:-1:1)];
n=[0:1:L];
w=[0:1:500]'*2*pi/500;
Hr=sin(w*n)*c';

设计III型线性相位滤波器:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%3型线性相位滤波器设计:
clear;
close all;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
h=[-3 1 -1 -2  5 6 5 -2 -1 1 -3]
M=length(h);
n=0:M-1;
[Hr,w,c,L]=hr_type3(h);
subplot(2,2,1);
stem(n,h);
xlabel('n');
ylabel('h(n)');
title('脉冲响应')
grid on
subplot(2,2,3);
stem(0:L,c);
xlabel('n');
ylabel('c(n)');
title('c(n)系数')
grid on
subplot(2,2,2);
plot(w/pi,Hr);
xlabel('频率单位pi');ylabel('Hr');
title('Ⅲ 型幅度响应')
grid on
subplot(2,2,4);
pzplotz(h,1);
grid on

IV型线性相位滤波器设计:

上述滤波器可以通过下面的matlab程序设计实现:

function [Hr,w,d,L]=hr_type4(h);
%计算所设计的4型滤波器的振幅响应
%Hr=振幅响应
%b=4型滤波器的系数
%L=Hr的阶次
%h=4型滤波器的单位冲击响应
M=length(h);
L=M/2;
d= 2*[h(L:-1:1)];
n=[1:1:L];
n=n-0.5;
w=[0:1:500]'*2*pi/500;
Hr=sin(w*n)*d';

设计IV型线性相位滤波器:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%4型线性相位滤波器设计:
clear;
close all;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
h=[-3 1 -1 -2  5 6 5 -2 -1 1 -3]
M=length(h);
n=0:M-1;
[Hr,w,d,L]=hr_type4(h);
subplot(2,2,1);
stem(n,h);
xlabel('n');
ylabel('h(n)');
title('脉冲响应')
grid on
subplot(2,2,3);
stem(1:L,d);
xlabel('n');
ylabel('d(n)');
title('d(n)系数')
grid on
subplot(2,2,2);
plot(w/pi,Hr);
xlabel('频率单位pi');ylabel('Hr');
title('Ⅳ型幅度响应')
grid on
subplot(2,2,4);
pzplotz(h,1);
grid on

线性相位滤波器的零点特性:

线性相位滤波器的零点有以下四种结构:

  • 零点既不在实轴,也不在单位圆,四组零点是两种互为倒数的共轭对。
  • 零点在单位圆,但不在实轴,零点的共轭值就是其倒数。
  • 零点在实轴,但不在单位圆,此时零点是实数,它没有负共轭部分,只有倒数,倒数也在实轴上。
  • 零点既在实轴,也在单位圆,此时零点就有两种情况,即z=1,z=−1z=1,z=-1z=1,z=−1,这时零点即是自己的负共轭,又是自己的倒数。

[Matlab]FIR滤波器设计:(线性相位滤波器的特性)相关推荐

  1. matlab线性相位滤波器设计,matlab用窗函数法设计线性相位fir低通滤波器

    matlab用窗函数法设计线性相位fir 低通滤波器 %用窗函数法设计线性相位低通滤波器clear all; wp=*pi; ws=*pi; wd=ws-wp; %hanning窗N_hann=cei ...

  2. 凯泽窗带通滤波器MATLAB,用凯泽窗设计线性相位带通FIR滤波器

    用凯泽窗设计线性相位带通FIR滤波器 一 源程序: 1.计算理想带通滤波器单位抽样响应ha(n)的M函数文件dbpfr.m function hd=dbpfr(omega,N) dw=omega(2) ...

  3. 设计线性相位高通FIR滤波器

    调用MATLAB工具箱函数frl设计线性相位高通FIR滤波器.要求通带截止频奉为0.6 Πrad,限带截止频率为0.45 Πrad,通带最大衰成为0.2 dB.阻带最小衰减为45dB.显示所设计的单位 ...

  4. matlab线性相位滤波器设计,关于第二类线性相位滤波器问题分析

    线性相位滤波器是移动相位与频率成比例的滤波器,因此不改变波形而引入一常数延迟.线性相位滤波器是一个混合相位的滤波器,它按照与频率成正比地对频率分量作时移.因而在通常频带内相位移与频率的关系图是线性的, ...

  5. 全通滤波器 相位校正 matlab,一文读懂滤波器的线性相位,全通滤波器,群延迟...

    延迟和 全通滤波器,来解释这些概念. 先说结论: 线性相位能保证信号中各频率成分的相对相位关系不改变. 通俗解释是: 信号经过线性相位滤波器后,各个频率分量的延时时间是一样的. 1. 延迟 举一个最简 ...

  6. 一文读懂滤波器的线性相位,全通滤波器,群延迟

    转载自https://blog.csdn.net/s09094031/article/details/83755663 一文读懂滤波器的线性相位,全通滤波器,群延迟 1. 延迟 2. 全通滤波器 3. ...

  7. c语言 汉宁窗,汉宁窗设计线性相位FIR低通数字滤波器.docx

    MACROBUTTON MTEditEquationSection2 SEQ MTEqn \r \h \* MERGEFORMAT SEQ MTSec \r 1 \h \* MERGEFORMAT S ...

  8. matlab非线性相位fir,数字信号处理实验(MATLAB版)实验23线性相位FIR数字滤波器.ppt...

    一.实验目的 (1)加深对线性相位FIR数字滤波器特性的理解. (2)掌握线性相位滤波器符幅特性和零极点分布的研究方法. (3)了解用MATLAB研究线性相位滤波器特性时程序编写的思路和方法. 二.实 ...

  9. MATLAB库函数firls(最小二乘线性相位FIR滤波器设计)的C语言实现

    firls函数功能 FILS设计了一种线性相位FIR滤波器,它可以最小化理想分段线性函数与滤波器在一组期望频带上的幅值响应之间的加权积分平方误差. b = firls(n,f,a) b = firls ...

最新文章

  1. java加载驱动没有异常显示_java – Tomcat没有加载MSSQL驱动程序
  2. C: Answers to “The C programming language, Edition 2”
  3. Premiere Pro CS5软件安装教程
  4. C和指针之字符串编程练习3
  5. python循环遍历所有目录_python 遍历文件夹
  6. Species Tree(HashTable实现)
  7. 去超市一定要存包吗_大桥路某超市收银时出现多收现象!大家付完钱一定要核对...
  8. CCF NOI1048 检测矩阵
  9. python max_Python max()
  10. linux 设置防火墙ip网段,网络防御-防火墙设置IP网段规则
  11. 基于FPGA ZC706的AD9371ADRV9009网口驱动配置
  12. 介绍几款可以在手机上用来学习编程的软件
  13. 神战奇迹私服进游戏选择服务器显示数字,最新mu手游奇迹sf发布
  14. Android 各版本gradle下载地址
  15. Java多线程_并发协助模型(管制法,信号灯法)
  16. 天牛须matlab,BAS天牛须搜索优化算法.pdf
  17. 蓝牙资讯|Q2全球TWS耳机出货量排行出炉,蓝牙音频新技术将推出市场
  18. git 推送出现 “fatal: The remote end hung up unexpectedly“ 解决方案
  19. 研发管理进阶:边怼人边改进
  20. Python通过word模板生成新的word文件

热门文章

  1. mysql 10进制 转32进制_php十进制转换三十六进制转换
  2. Twinmotion 2019 对比 Lumion9 哪家强?
  3. 从零实现一个在线考试系统
  4. OUU抗幽护胃益生菌,精准抗幽,科学养胃
  5. 药石科技宣布任命苗文芳博士为首席执行官;吉利德携手亚马逊云科技加速新药研发交付 | 医药健闻...
  6. 入行四年的普通程序员是怎样的工作与生活
  7. FFmpeg学习日记2
  8. 【现代信号处理】 12 - 深入探讨奇异值分解
  9. 求每个部门的平均工资
  10. 芯片验证系列——验证计划