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

11 篇文章 12 订阅
8 篇文章 6 订阅
[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(N1n)(0<=n<=N1)

    τ = ( N − 1 ) / 2 τ = (N-1)/2 τ=(N1)/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(N1n)(0<=n<=N1)

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

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

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

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

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

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

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

    • w = π w= π w=π时, H ( π ) = 0 H(π)=0 H(π)=0,也就是说 H ( z ) H(z) H(z) z = − 1 z=-1 z=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 ( π ) = 0 H(π)=0 H(π)=0,也就是说 H ( z ) H(z) H(z) z = ± 1 z=±1 z=±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 ( π ) = 0 H(π)=0 H(π)=0,也就是说 H ( z ) H(z) H(z) z = ± 1 z=±1 z=±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('零极点图')

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Kvvp70J-1573810752846)(G:\研究生\项目小组任务\笔记\第四周和第五周笔记\hr_tyoe1.bmp)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zLE7jQSZ-1573810752848)(G:\研究生\项目小组任务\笔记\第四周和第五周笔记\hr_type2.bmp)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bP86rRzB-1573810752850)(G:\研究生\项目小组任务\笔记\第四周和第五周笔记\hr_type3.bmp)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9TeMCcA-1573810752852)(G:\研究生\项目小组任务\笔记\第四周和第五周笔记\hr_type4.bmp)]

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

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

  • 零点既不在实轴,也不在单位圆,四组零点是两种互为倒数的共轭对。
  • 零点在单位圆,但不在实轴,零点的共轭值就是其倒数。
  • 零点在实轴,但不在单位圆,此时零点是实数,它没有负共轭部分,只有倒数,倒数也在实轴上。
  • 零点既在实轴,也在单位圆,此时零点就有两种情况,即 z = 1 , z = − 1 z=1,z=-1 z=1,z=1,这时零点即是自己的负共轭,又是自己的倒数。
  • 15
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泸州月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值