Я пытаюсь решить уравнения Юла – Уокера для процесса авторегрессии заданного порядка P
по заданному числу лагов - символически с помощью Matlab's Symbolic Math Toolbox .
Уравнения связывают автокорреляцию с запаздыванием k
, rho_k
с коэффициентами процесса AR phi_i
, где i = 1 ... P
и P
- порядок процесса.Я хочу решить их за rho
, учитывая phi
.
Я придумал реализацию, которая, кажется, работает, но я не уверен, является ли это наилучшим способом решения этой задачи, особенно способомЯ строю уравнения итеративно:
phi = sym('phi', [1 3]);
n = 10;
P = numel(phi);
nLags = max(P + 1, n);
syms eqns
% ρ(0) = 1
syms rho0
eqns(1) = (rho0 == 1);
% ρ(k) = sum_i^P φ_i ρ(|k - i|) for k > 0
rho = [rho0, sym('rho', [1, nLags - 1])];
for k = 1 : nLags - 1
syms summands
for i = 1 : P
summands(i) = phi(i) * rho(abs(k - i) + 1);
end
eqns(k + 1) = (rho(k + 1) == sum(summands));
end
solution = solve(eqns, rho);
Я пытался использовать symsum
вместо внутреннего цикла, но обнаружил, что не могу использовать переменную числового цикла k
в символическом выражении.Есть ли лучший способ сделать это?