newvar.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:1k
源码类别:

波变换

开发平台:

Matlab

  1. function Q = newvar(P,var)
  2. %NEWVAR Change variable in a Laurent polynomial.
  3. %   Q = NEWVAR(P,VAR) returns the Laurent polynomial Q which
  4. %   obtained by doing a change of variable.
  5. %   The valid choices for VAR are:
  6. %       'z^2': P(z) ---> P(z^2)       (see DYADUP)
  7. %       '-z' : P(z) ---> P(-z)        (see MODULATE)
  8. %       '1/z': P(z) ---> P(1/z)       (see REFLECT)
  9. %       'sqz': P(z) ---> P(sqrt(z))   (see DYADDOWN)
  10. %   
  11. %   See also DYADDOWN, DYADUP, EO2LP, MODULATE, REFLECT.
  12. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 18-May-2001.
  13. %   Last Revision: 14-Jun-2003.
  14. %   Copyright 1995-2004 The MathWorks, Inc.
  15. %   $Revision: 1.1.6.2 $  $Date: 2004/04/13 00:39:00 $
  16. C = P.coefs;
  17. D = P.maxDEG;
  18. L = length(C);
  19. switch var
  20. case 'z^2'
  21.     newC = dyadup(C,0);
  22.     Q = laurpoly(newC,2*D);
  23.     
  24. case '-z'
  25.     pow = [D:-1:D-L+1];  
  26.     S = (-1).^pow;
  27.     newC = S.*C;
  28.     Q = laurpoly(newC,D);
  29.     
  30. case '1/z'
  31.     newD = -(D-L+1);    
  32.     newC = fliplr(C);
  33.     Q = laurpoly(newC,newD);
  34. case 'sqz'
  35.     newC = C(1+mod(D,2):2:end);
  36.     newD = floor(D/2);
  37.     Q    = laurpoly(newC,newD);
  38. end