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

MATLAB Discussion :

[polyfit] Approximation de droite par : soucis de performance.


Sujet :

MATLAB

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Clotho
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2011
    Messages
    1 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 522
    Par défaut [polyfit] Approximation de droite par : soucis de performance.
    Salut la compagnie!

    Il y a longtemps que je ne vous ai plus cassé les pieds ici (principalement parce que mes questions ont des réponses déjà fournies en cherchant un peu...) mais là je ne sais pas trop par quel côté aborder mon problème.

    Pour faire simple, j'ai un signal très bruité que je dois décomposer en deux parties, et ces deux parties subissent ensuite une approximation pour me fournir dans le cas idéal 2 équations de droites quand c'est possible, sinon une équation de droite, ou quand c'est calme rien. (Cf pièce jointe, des courbes extraites sous Excel ...)

    On voit que le premier signal ne fournit qu'une droite, et le second est un cas "bien mais pas top".

    Je n'ai pas/plus vraiment de soucis sur la syntaxe et le fonctionnement de mon code matlab (pour une fois ) mais un soucis de performances.

    Pour faire ces approximations linéaires, j'ai une équation du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coefficients_droite = polyfit((1:fin_droite1,signal_entree(1:fin_droite1),1)
    (c'est bien sûr pas fonctionnel comme ça)

    La procédure est donc (très) simple, et me donne les bons coefficients a et b de l'équation y=ax+b.

    Mon soucis, on y arrive, est qu'utiliser polyfit me semble revenir à chasser des moustiques avec un lance-flamme. Au profiler pour traiter 25000 itérations il me faut une quarantaine de secondes, mais presque la moitié du temps est nécessaire pour une vérification de la fonction polyfit, à savoir la condition:

    polyfit>warnIfLargeConditionNumber
    , et le calcul qui y est attenant, passant par un condest.

    On touche à mes limites, parce que:
    -j'ai beau pratiquer Matlab, je connais un dixième des fonctions en étant très optimiste.
    -j'ai beau faire un peu de traitement de données/signal, je suis chimiste (j'aime raconter ma vie) donc je ne sais pas vraiment comment faire pour traiter un signal aussi dégueulasse en entrée et arriver à extraire une équation de droite.

    Donc on va enfin arriver à ma question:

    Mon code marche, c'est la fête, mais c'est trop lent. Pour une approximation linéaire, est-ce que vous avez quelque chose en magasin de plus efficace que polyfit, et qui marcherait sur un signal affreux (donc pas de moyenne glissante ou de calcul de droite niveau collège, j'ai essayé...)?

    J'ai un peu regardé interp1, qui me semble rapide pour trouver l'ordonnée à l'origine (mais poins précis que polyfit...) mais je ne vois pas comment l'utiliser pour le coefficient directeur, avec un signal bruité.
    Images attachées Images attachées  

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [chmod] Remettre les droits par défaut
    Par Haze. dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 06/09/2017, 20h33
  2. Réponses: 5
    Dernier message: 02/01/2008, 16h58
  3. Réponses: 3
    Dernier message: 23/11/2007, 12h50
  4. approximation de courbe par des segments
    Par dseguret dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 27/02/2007, 21h03
  5. [Installation] Gestion des droits par dossier ?
    Par Glob dans le forum CVS
    Réponses: 3
    Dernier message: 13/03/2006, 15h04

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