mpower.m

来自「多小波分析源码」· M 代码 · 共 51 行

M
51
字号
function Pn = mpower(P,n)

% MPOWER -- power of matrix polynomial
%
%        Pn = P^n
%        Pn = mpower(P,n)
%
% This function is not meant to be called by the user. It is called by
% Matlab if an expression of the form P^N is encountered, where P
% is a matrix polynomial.
%
% N must be an integer. For N=0, the result is a unit matrix of the
% correct size. For N>0, the result is computed by repeated
% application of P*P. For N<0, the routine attempts inv(P)^N.

% Copyright (c) 2004 by Fritz Keinert (keinert@iastate.edu),
% Dept. of Mathematics, Iowa State University, Ames, IA 50011.
% This software may be freely used and distributed for non-commercial
% purposes, provided this copyright statement is preserved, and
% appropriate credit for its use is given.
%
% Last update: Feb 20, 2004

% check that n is integer
if (length(n) ~= 1 | round(n) ~= n)
    error('exponent must be integer');
end

if (n == 0)
    Pn = P;
    Pn.coef = eye(size(P));
    if (isa(P,'sym'))
	Pn.coef = sym(Pn.coef);
    end
    Pn.min = 0;
elseif (n > 0)
    Pn = P;
    for i = 2:n
	Pn = Pn * P;
    end
else % n < 0
    Pinv = inv(P);
    Pn = Pinv;
    for i = 2:-n
	Pn = Pn * Pinv;
    end
end

Pn = trim(Pn);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?