rr307307 发表于 2008-5-28 03:43

陈怀琛《数字信号处理教程 MATLAB释义与实现》里的问题

书上7.2.3节里面介绍了一个字程序amplres.m
代码:
function =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=*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 有问题?我是完整按照书上写的,高手指点

ch_j1985 发表于 2008-5-28 07:17

原帖由 rr307307 于 2008-5-28 03:43 发表 http://www.chinavib.com/forum/images/common/back.gif
书上7.2.3节里面介绍了一个字程序amplres.m
代码:
function =amplres(h)
%给定FIR滤波器系数求滤波器符幅特性
%h=FIR滤波器的脉冲响应或分子系数向量
%A=滤波器符幅特性
%w=取的频率向量。在0到 ...

试试把le改为1e
页: [1]
查看完整版本: 陈怀琛《数字信号处理教程 MATLAB释义与实现》里的问题