Bonjour !
Je ne suis pas sûr que ma discussion trouve sa place ici, si je dois la rediriger sur un autre forum (comme Algorithmes) je le ferai aussitôt et veuillez m'excuser de m'être trompé.
Je dispose de signaux assez bruités dont j'aimerais savoir s'ils contiennent des segments plus ou moins sinusoïdaux.
Ma première intuition fut d'utiliser la fonction fit et de l'appliquer à diverses portions du signal pour repérer les zones à penchant sinusoïdal.
J'ai donc tenté une telle méthode : je tente de fitter un sinus sur tout le signal, si l'erreur est suffisamment faible (par exemple 5% par rapport au signal) je considère que c'est bon, j'ai mon sinus. Sinon je fit le signal tronqué de son premier 1/10 de points (par exemple encore une fois, j'ai testé aussi avec 1/50) ou de son dernier 1/10 de points. Je compare les erreurs et je garde le segment qui ressemble le mieux à un sinus.
Et je recommence jusqu'à que mon erreur soit inférieure à 5% soit que je n'ai plus assez de points.
Dans la pratique la complexité est faible (et heureusement car fit est une fonction très coûteuse, je trouve, et mes signaux dépassent facilement les 10 000 points) mais les résultats sont très mauvais ! Je n'ai pas tenté sur mes signaux à moi pour l'instant mais uniquement sur un signal théorique plus simple : du bruit, mon sinus non bruité, et du bruit. Si l'intensité du bruit est trop importante il aura tendance à mieux calquer un sinus sur le bruit que sur le segment qui contient réellement le sinus, c'est problématique !
Je n'ose pas trop imaginer quel résultat une telle manière de faire me rendra avec des signaux bien moins beaux, certes je les aurai un peu débruités (avec une moyenne glissante) avant mais les sinus seront bien moins explicites…
Évidemment je peux appliquer la méthode assez brute qui consiste à appliquer la fonction fit à tous les segments possibles du signal, mais bon une complexité en N2 avec la fonction fit ça risque fortement de durer très longtemps.
J'ai également essayé d'utiliser la fft, encore une fois c'est très (trop) sensible au bruit, de plus cela me gêne un peu plus d'utiliser la fft car j'aimerais pouvoir étendre cet algorithme à la recherche d'autres motifs et c'est pourquoi la fonction fit me plait plus.
Si vous avez une idée pour résoudre mon problème, notamment si un meilleur parcours du signal avec fit vous traverse l'esprit, je suis très intéressé.
Si vous avez besoin de plus d'informations je suis évidemment prompt à vous répondre.
Merci d'avance pour votre aide. :-)
Partager