• 大小: 22KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Matlab
  • 标签: 小数时延  滤波器  

资源简介

该程序为小数时延滤波器matlab程序,实现小数倍采样周期时延,可以应用在许多场合,如语音处理、测距定位等。

资源截图

代码片段和文件信息

function ap = apeqp2(Napxwp)
% APEQP2.M
% MATLAB m-file for ALLPASS fractional delay design
% using EQUIRIPPLE PHASE approximation
% format: ap = apeqp2(Napxwp)
% Input: Nap = filter order N
%        x = fractional delay (0 < x <= 1) 
%        wp = passband edge of approximation (0 < wp < 1)      
% Output: Filter coefficient vector ap = ap(1)...ap(N+1)
%         (Note that ap(1)=1 always)
% Subroutines: standard MATLAB & SP Toolbox functions &
%              numint2.m eigsolv2.m envelop2.m
% Timo Laakso 27.02.1993
% Revised 15.01.1996 by Timo Laakso
%         17.01.1996 by Vesa Valimaki

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Initialization: 
%
dw = wp/200;         % 201-point approximation grid
%dw = wp/511;         % 512-point approximation grid (VPV 9.12.1996)
wf = [0:dw:wp];      % vector of freq. pts
%
thP = -(Nap+x)*wf;  % prescribed phase
%
% beta and initializations
%
beta = -0.5*x*wf; beta2=2*beta;
sinB = sin(beta); cosB = cos(beta);
wc = wf-wf; WW = wc; W0 = wc+1-wc;     % weight vectors
ap = zeros(1Nap+1); ap(1)=1;          % allpass coefficient vector
P4 = zeros(Nap+1);                     % eigenfilter matrix
Nap1=Nap-1;
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Compute P4:
%
EP = 2;     % initial exponent parameter     
% initial value ap from P1!
lser=1000; it=0;
%while ((lser>1.0E-8)&(it<51));
while ((lser>1.0E-12)&(it<171));  % VPV 9.12.1996
  if (EP<51)
    if (lser<1.0E-4)
      if (EP<4) EP = EP+1;
      elseif (EP<10) EP = EP+2;
      else EP = EP+5;
      end;      % 3rd if
      lser = 1000;
    end         % 2nd if
  end           % 1st if
  it = it+1;  % iteration number 
  Hap = freqz(ap1wf);   % weight function from the previous solution
  wc = cosB.*real(Hap) - sinB.*imag(Hap);
  thAP4 = -Nap*wf+2*unwrap(angle(freqz(1apwf)));
  deltaT4 = thP-thAP4;
  wenv = envelop2(deltaT4); % create the envelope for equiripple weighting
  W = (wenv.^EP)./(wc.^2);
  for k=1:Nap+1
    k1wf = (k-1)*wf;
    cT(k) = numint2(W.*cos(k1wf)); 
    cH(k) = numint2(W.*cos(beta2-k1wf));
    rH(k) = numint2(W.*cos(beta2-(k+Nap1)*wf));
  end % for k
  T1 = toeplitz(cT); H1 = hankel(cHrH);
  P4 = T1-H1; apold = ap;
  ap= eigsolv2(P4Nap+1);     % solve the eigenvalue problem
  ap = (ap+(EP-1)*apold)/EP;
  dif=apold-ap; lser=dif*dif‘;
end              % while lserit
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2496  1996-12-09 10:21  apeqp2.m
     文件        2563  1996-12-12 16:11  apeqpd2.m
     文件        2525  1996-02-01 12:58  apfar2.m
     文件         692  1996-02-01 12:58  apflat2.m
     文件        1483  1996-02-01 12:58  aplsp2.m
     文件        1540  1996-02-01 12:58  aplspd2.m
     文件        1855  1996-02-01 12:58  aplspdi2.m
     文件        1742  1996-02-01 12:58  aplspi2.m
     文件         323  1996-02-01 12:58  bincof2.m
     文件         288  1996-02-01 12:58  eigsolv2.m
     文件         767  1996-02-01 12:58  envelop2.m
     文件        7693  1996-02-01 12:58  fdap2.m
     文件       12337  1996-02-01 12:58  fdfir2.m
     文件        2458  1996-02-01 12:58  firfar2.m
     文件         679  1996-02-01 12:58  hcontro2.m
     文件         758  1996-02-01 12:58  heqrip2.m
     文件        1045  1996-02-01 12:58  hgls2.m
     文件         869  1996-02-01 12:58  hlagr2.m
     文件         957  1996-02-01 12:58  hsincw2.m
     文件         971  1996-02-01 12:58  hsplin2.m
     文件        1747  1996-02-01 12:58  iniheq2.m
     文件         957  1996-02-01 12:58  inihip2.m
     文件        1152  1996-02-01 12:58  inihsin2.m
     文件         440  1996-02-01 12:58  numint2.m

评论

共有 条评论