|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
书上7.2.3节里面介绍了一个字程序amplres.m
代码:
function [A,w,type,tao]=amplres(h)
%给定FIR滤波器系数求滤波器符幅特性
%h=FIR滤波器的脉冲响应或分子系数向量
%A=滤波器符幅特性
%w=取的频率向量。在0到pi之间分成500份,501个点
%type=线性相位滤波器的类型
%tap=符幅特性的群延迟
%
N=length(h);tao=(N-1)/2;
L=floor((N-1)/2);%求滤波器阶次及符幅特性的阶次
n=1:L+1;w=[0:500]*pi/500;%去滤波器频率向量
if all(abs(h(n))-h(N-n+1)<le-10)%判断滤波器系数若为对称
A=2*h(n)*cos(((N+1)/2-n)'*w)-mod(N,2)*h(L+1);%对称条件下计算A
%在N为奇数时h(L+1)多算一倍,要去掉。N为偶数时,乘mod(N,2)以取消此项
type=2-mod(N,2);%判断并给出类型
else if all(abs(h(n)+h(N-n+1))<le-10)&(h(L+1)*mod(N,2)==0)%系数若为反对称
%在N为奇数时h(L+1)为零是奇对称判别条件之一N为偶数时不要这条件,故乘以mod(N,2)。
A=2*h(n)*sin(((N+1)/2-n)'*w);%反对称条件下A的公式
type=4-mod(N,2);%判断并给出类型
else error('错误:这不是线性相位滤波器')%滤波器系数非对称,报告错误
end
end
调用子程序会出现:
??? Error using ==> amplres
Error using ==> le
Not enough input arguments.
abs(h(n))-h(N-n+1)<le-10 有问题?我是完整按照书上写的,高手指点 |
|