www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/@laurpoly/newvar.m

    function Q = newvar(P,var)
%NEWVAR Change variable in a Laurent polynomial.
%   Q = NEWVAR(P,VAR) returns the Laurent polynomial Q which
%   obtained by doing a change of variable.
%   The valid choices for VAR are:
%       'z^2': P(z) ---> P(z^2)       (see DYADUP)
%       '-z' : P(z) ---> P(-z)        (see MODULATE)
%       '1/z': P(z) ---> P(1/z)       (see REFLECT)
%       'sqz': P(z) ---> P(sqrt(z))   (see DYADDOWN)
%   
%   See also DYADDOWN, DYADUP, EO2LP, MODULATE, REFLECT.

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 18-May-2001.
%   Last Revision: 14-Jun-2003.
%   Copyright 1995-2004 The MathWorks, Inc.

C = P.coefs;
D = P.maxDEG;
L = length(C);
switch var
case 'z^2'
    newC = dyadup(C,0);
    Q = laurpoly(newC,2*D);
    
case '-z'
    pow = [D:-1:D-L+1];  
    S = (-1).^pow;
    newC = S.*C;
    Q = laurpoly(newC,D);
    
case '1/z'
    newD = -(D-L+1);    
    newC = fliplr(C);
    Q = laurpoly(newC,newD);

case 'sqz'
    newC = C(1+mod(D,2):2:end);
    newD = floor(D/2);
    Q    = laurpoly(newC,newD);
end