Comment faire un lissage de la courbe dans matlab?
la courbe bleue est bruyant terrain de la parcelle d'origine(rouge). Est-il possible d'approximer la courbe bleue à près de courbe rouge?
Assurez-vous. Il ya beaucoup de différents moyens de parvenir à cela, de quoi avez-vous essayé? Comme une simple première approche, donner une moyenne mobile de filtre d'un coup, ou, puisque vous semblez avoir de grandes valeurs aberrantes, du déplacement d'un filtre médian. Le téléchargement d'un échantillon de vos données aurait du sens.
OriginalL'auteur crack_addict | 2012-10-20
Vous devez vous connecter pour publier un commentaire.
Nous allons définir une ligne ondulée fonction:
Et ajouter beaucoup de bruit:
Maintenant faire un 1D filtre Gaussien, de normaliser et de convolve avec notre fonction:
Voyons le résultat
Rouge la fonction d'origine, le bleu de la version bruyante, vert le lissage, "récupéré" de la fonction.
Tout d'abord, juste assez, c'est un polynôme en plus une condition sine. Deuxièmement, je pense qu'il fonctionne toujours. Mais bien sûr, un autre filtre pourrait donner de meilleurs résultats pour ses données, je ne dis pas que c'est la seule façon de le faire.
oui ça fonctionne quand j'ai fait un filtre moyenneur sur les résultats de filtrage gaussien. et oui c'est vrai que le bruit est normalement distribué de sorte que le résultat n'est pas assez bon.
Remarque: Pour
gausswin()
, le Traitement du Signal boîte à outils est nécessaire.c'était très utile pour moi, merci! Où puis-je obtenir plus d'infos à ce sujet (et le filtrage des données, fenêtre gaussienne,...)? toute ressource/bon livre que vous recommandez?
OriginalL'auteur Junuxx
une autre option est d'utiliser "lisse". J'aime l'utiliser parce que c'est un seule ligne fonction. En utilisant le code de la réponse précédente par @Junuxx:
Maintenant appliquer lisse:
Pour plus d'info:
OriginalL'auteur bla
Il suffit d'ajouter une option supplémentaire :
Utilisation
cftool
dans l'invite de matlab:OriginalL'auteur 0x90
gausswin()
nécessite la Signal Processing Toolboxsmooth()
nécessite la d'ajustement de la Courbe boîte à outilsSi vous ne disposez pas de ces boîtes à outils, voici un simple
smooth()
mise en œuvre:lisse.m:
résultat pour
y3 = smooth(y2, 15)
, à l'aide de @Junuxx code:OriginalL'auteur sergej