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 :

ajustement d'une courbe par une sinusoïde en utilisant la méthode des moindres carrée


Sujet :

Signal

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Points : 12
    Points
    12
    Par défaut ajustement d'une courbe par une sinusoïde en utilisant la méthode des moindres carrée
    Bonjour,
    j'ai 25 images ciné_IRM qui représente le mouvement du cœur pendant le cycle cardiaque, à chaque fois j'obtiens la courbe de variation de l'intensité au cours du temps en suivant la variation de l'intensité du pixel au cours de ces 25 images
    Ci-joint un exemple d'une courbe de variation de 'intensité au cours du temps pour un pixel donnée.
    maintenant j'ai besoin de faire l'ajustement de cette courbe par une sinusoïde en utilisant la méthode des moindres carrées
    la fonction de cette sinusoïde est: A1 sin (wt+φ1) + A2 sin (2wt + φ2)

    j'ai essayé avec la fonction lsqcurvefit mais ca n'a pas marché
    j'ai besoin d'aide svp
    Images attachées Images attachées  

  2. #2
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Points : 12
    Points
    12
    Par défaut le code utilisé
    Bonjour
    voici le code de la fonction de fitting :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function y =f(param,t)
    a1= param(1);
    a2=param(2)
    w=0.2;
    y = a1*sin(w*t + a2)  ;
    et le code principal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    t=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25];
    A= [910  773  656  548  477    422   414    412   398   382   366   352    380    514    630  666    811    923     1030    1052   1007   982   1023    1049  1041];
    figure(2),
    c=plot(t,A(t));
    a0 = [500  120 ]
    options = optimset('lsqcurvefit');
    options = optimset(options,'LevenbergMarquardt' ,'on');
    options.MaxFunEvals = 100;
    options.MaxIter = 6;
    asol = lsqcurvefit (@f, a0, t, A,[],[],options);
    plot (t, A, '*', t, f(asol, t))
    ce code me donne de mauvais résultats Ci-joint le résultat obtenu
    SVP j'ai besoin de vos aides ?
    Images attachées Images attachées  

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    L'erreur vient du modèle que tu as choisi : a1*sin(w*t + a2).
    Tu considères que ta courbe oscille autour de 0, or elle le fait plutôt aux environs de 800.
    Il te faut au moins ajouter un offset : a1*sin(w*t + a2) + a3

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    je vous remercie énormément pour votre réponse
    le problème est résolu grâce à votre remarque,
    ci-joint la courbe obtenue.
    permettez moi de poser une autre question,
    Pour chaque pixel, j'ai une courbe de variation de l'intensité au cours du temps,
    donc je dois faire le lissage pour toutes les courbes mais le problème que les paramètres de a0 varient à chaque fois , est ce qu'il y'a un moyen pour que mon code soit valable pour toutes les courbes ?
    Images attachées Images attachées  

Discussions similaires

  1. Régression (fit) d'une courbe par une fonction puissance
    Par microwatiboy dans le forum MATLAB
    Réponses: 4
    Dernier message: 11/02/2015, 13h38
  2. Approximation d'une ligne par une courbe de bezier
    Par Kromagg dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 02/03/2011, 18h07
  3. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  4. Relier des points dans une paintbox par une courbe
    Par Benjikos dans le forum Débuter
    Réponses: 4
    Dernier message: 19/08/2007, 13h06
  5. Réponses: 11
    Dernier message: 05/10/2006, 13h20

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