IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Signal Discussion :

Fitting courbe ARMA


Sujet :

Signal

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 40
    Points
    40
    Par défaut Fitting courbe ARMA
    Salut tout le monde,

    Bon j'ai une question assez technique en fait. J'utilise la toolbox System Identification Tool pour faire du fitting sur des courbes. J'arrive à faire marcher la toolbox dans ce sens là pas de soucis.

    Etant donné que je manipule des modèle autoregressif à moyenne ajusté (ARMA), je sais que y(t) est calculé en fonction des échantillons précédents (le nombre dépendant des différents ordres du filtre) . La toolbox me sort les coefficients du filtre. Moi ce que j'aimerais avoir c'est la valeur de y(t) calculé à partir des échantillons précédents.

    Vous pensez qu'on puisse faire ca à partir des coefs du filtre ARMA sorti?

    Merci par avance de votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    Moi ce que j'aimerais avoir c'est la valeur de y(t) calculé à partir des échantillons précédents.
    Pour avoir les y(nT) il faut programmer l'équation récurrente :
    Exemple pour un ordre 3
    Calcul des coef ARMA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [b,a]=butter(4,0.5,'low')
    [h,w]=freqz(b,a,64)
    figure(1)
    plot(w,abs(h))
    hold on
    [bb,aa]=invfreqz(h,w,3,3)
    [hh,ww]=freqz(bb,aa)
    plot(ww,abs(hh),':')
    grid
    Equation récurrente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    y(1)=x(1);%INITIALISATION des valeur passées du signal d'entré
    y(2)=x(2);
    y(3)=x(3);
    for n=4:N
        y(n)=bb(1)*x(n)+bb(2)*x(n-1)+bb(3)*x(n-2)+bb(4)*x(n-3)-aa(2)*y(n-1)-aa(3)*y(n-2)-aa(4)*y(n-3);%Equation récurrente
        y(n-3)=y(n-2);
        y(n-2)=y(n-1);
        y(n-1)=y(n);
    end
    figure(4)
    plot(t,y)
    grid

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup pour ce code...
    Néanmoins , il y a qqchose que je ne comprends pas. Pourquoi met on à jour les valeurs de y dans la boucle consacrée à l'équation réccurrente?

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour.
    les valeurs de y dans la boucle consacrée à l'équation réccurrente?
    Effectivement cela n'est pas nécessaire lorsqu'on travaille avec un tableau. Le faire systématiquement est une déformation du temps réel lorsqu'on travaille sur des variables.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    oui c'est ce que je pensais effectivement...
    Dans le même genre de question, dites moi ce que vous en pensez : Je fais des prédictions à base d'ARMA par segments (je segmente mon signal). Je générè les coefficients de mon ARMA pour chaque segment à l'aide de la fonction ARMAX de Matlab.
    Je sais que plus le segment en question est long et plus les coefficients permettront une prédiction meilleure.

    Voilà ma question : est-il judicieux de calculer mes coefficients ARMA sur un segment disons de 40 points et de prendre des ordres de 3 et 3 ? Ce qui fait que quand je réinjecterais mes coefficients ARMA dans mon équation réccurente, j'aurais une précision bien plus importante que si j'avais calculé mes ARMA seulement sur 3 points.

    Qu'en pensez vous ?

    Merci

  6. #6
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Salut!

    Oui. Tu auras une precision plus importante quand le nombre des points est 40.

    La precision c'est plus bonne si tu as de nombreux points!

    C'est comme dans la regression polynomiale.

    Bonne chance,

    Michel

Discussions similaires

  1. Fit courbe Scipy
    Par Strychnine dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 25/06/2010, 10h41
  2. [Curve Fitting] Courbe de Wiebe
    Par DavyISAT dans le forum Mathématiques
    Réponses: 2
    Dernier message: 21/09/2009, 18h42
  3. Extraire les coefficient d'un "Fit" de courbe
    Par kwatz dans le forum MATLAB
    Réponses: 4
    Dernier message: 15/04/2009, 15h59
  4. comment faire un fit de courbe?
    Par mygwel dans le forum Mathématiques
    Réponses: 8
    Dernier message: 06/03/2009, 17h45
  5. Ajustement d'une courbe (fitting)
    Par glorious_rk dans le forum Signal
    Réponses: 12
    Dernier message: 27/05/2008, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo