Si vous écrivez x (i) pour un couple de valeurs, vous verrez un modèle dans il:
x(1) = 0; % since the loop starts at i=2
x(2) = k*x(1) + (1-k)*u(2)
= 0 + (1-k)*u(2)
x(3) = k*x(2) + (1-k)*u(3)
= k*(1-k)*u(2) + (1-k)*u(3)
x(4) = k*x(3) + (1-k)*u(4)
= k^2*(1-k)*u(2) + k*(1-k)*u(3) + (1-k)*u(4)
...
vous repérerez facilement l'être motif:
x(i) = (1-k) * sum(k^(i-j)*u(j), j=2..i)
qui est maintenant explicite f onction.
Vous pouvez l'appliquer pour supprimer votre boucle, mais en réalité, cette fonction explicite doit elle-même calculer une somme importante. Faire cela pour chaque index de x prend probablement plus de temps que de boucler et de réutiliser les résultats précédents.
il y a une relation avec les valeurs précédentes de x dans le calcul de x (i), donc vous ne pouvez supprimer la boucle que si vous supprimez cette relation et explicite x (i) –
Je pensais que l'utilisation de cumsum ou quelque chose de similaire pouvait aider? – Philipp