⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kissarma.m

📁 Mathematical Methods by Moor n Stiling.
💻 M
字号:
function [a,b] = kissarma(y,p)
% 
% Determine the ARMA parameters a and b of order p based upon the data in y.
%
% function [a,b] = kissarma(y,p)
%
% y = sequence 
% p = order of AR part
%
% a = AR coefficients
% b = MA coefficients

% Copyright 1999 by Todd K. Moon

y = y(:);                   % convert to columns
n = length(y);
e = zeros(p+1,1);  
e(p+1) = 1;                 % vector with one 1
Y = []; 
A = []; 
for i=1:n-p                 % build the data matrix
  Y = [Y y(i:p+i)];
end
a = [rand(p,1); 1];         % initial guess
while 1
  A = [];                   % build a new a
  for i=1:n-p
    A = [A [zeros(i-1,1); a; zeros(n-p-i,1)]];
  end
  Q = Y*inv(A'*A)*Y';
  newa = 1/(e'*inv(Q)*e) * inv(Q)*e
  if(norm(newa-a) < 1.e-5)
    a = newa; break;
  end
  a = newa;
end
% now find b
% first form K^{-1}
Ki = [];
for i=1:p
  Ki = [Ki; [a(p+2-i:p+1)' zeros(1,n-i)]];
end
for i=p+1:n
  Ki = [Ki; [zeros(1,i-(p+1)) a' zeros(1,n-i)]];
end
% Since we only need the first p columns of K, partition
% and use matrix inversion formula
K11 = Ki(1:p,1:p);    K12 = Ki(1:p,p+1:n);
K21 = Ki(p+1:n,1:p);  K22 = Ki(p+1:n,p+1:n);
K11i = inv(K11);   K22i = inv(K22);
E = K11 - K12*K22i*K21;    H = K22 - K21*K11i*K12;  G = -K21*K11i;
H = [inv(E); inv(H)*G];

b = pinv(H)*y;

⌨️ 快捷键说明

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