Monday 13 February 2017

Matlab Mobile Moyenne Tableau

J'ai besoin de calculer une moyenne mobile sur une série de données, dans une boucle for. Je dois obtenir la moyenne mobile sur N9 jours. Le tableau Im calculant est 4 séries de 365 valeurs (M), qui sont elles-mêmes des valeurs moyennes d'un autre ensemble de données. Je veux tracer les valeurs moyennes de mes données avec la moyenne mobile dans une parcelle. J'ai googlé un peu sur les moyennes mobiles et la commande conv et trouvé quelque chose que j'ai essayé de mettre en œuvre dans mon code. Ainsi, fondamentalement, je calculer ma moyenne et le tracer avec une moyenne mobile (fausse). J'ai choisi la valeur wts directement sur le site mathworks, donc c'est incorrect. (Source: mathworks. nlhelpeconmoving-average-trend-estimation. html) Mon problème, c'est que je ne comprends pas ce que c'est wts est. Quelqu'un peut-il expliquer si elle a quelque chose à voir avec le poids des valeurs: qui est invalide dans ce cas. Toutes les valeurs sont pondérées de la même façon. Et si je fais ce tout à fait mal, puis-je obtenir de l'aide avec elle Mes plus sincères remerciements. L'utilisation de conv est un excellent moyen de mettre en œuvre une moyenne mobile. Dans le code que vous utilisez, wts est combien vous peser chaque valeur (comme vous l'avez deviné). La somme de ce vecteur doit toujours être égale à un. Si vous souhaitez pondérer chaque valeur uniformément et faire un filtre N de taille N alors vous voudriez faire L'utilisation de l'argument valide en conv entraînera à avoir moins de valeurs dans Ms que vous avez dans M. Utilisez même si vous ne vous inquiétez pas les effets de Rembourrage zéro. Si vous avez la boîte à outils de traitement du signal, vous pouvez utiliser cconv si vous voulez essayer une moyenne mobile circulaire. Quelque chose comme vous devrait lire la documentation conv et cconv pour plus d'informations si vous n'avez pas déjà. Vous pouvez utiliser le filtre pour trouver une moyenne courante sans utiliser une boucle for. Cet exemple trouve la moyenne courante d'un vecteur à 16 éléments, en utilisant une taille de fenêtre de 5. 2) lisse dans le cadre de la Boîte à outils d'ajustement de courbe (qui est disponible dans la plupart des cas) yy lisse (y) lisse les données dans le vecteur colonne Y en utilisant un filtre de moyenne mobile. Les résultats sont renvoyés dans le vecteur colonne yy. La portée par défaut pour la moyenne mobile est 5.29 Septembre, 2013 Moyenne mobile par convolution Qu'est-ce que la moyenne mobile et à quoi sert-elle? Comment la moyenne mobile se fait-elle en utilisant la convolution La moyenne mobile est généralement utilisée pour supprimer le bruit d'un signal? Définissez la valeur de chaque point à la moyenne des valeurs dans son voisinage. Par une formule: Ici x est l'entrée et y est le signal de sortie, tandis que la taille de la fenêtre est w, supposé être impair. La formule ci-dessus décrit une opération symétrique: les échantillons sont prélevés des deux côtés du point réel. Voici un exemple de vie réelle. Le point sur lequel la fenêtre est posée est en fait rouge. Les valeurs en dehors de x sont censées être des zéros: Pour jouer et voir les effets de la moyenne mobile, jetez un oeil à cette démonstration interactive. Comment le faire par convolution Comme vous l'avez peut-être reconnu, calculer la moyenne mobile simple est semblable à la convolution: dans les deux cas une fenêtre est glissée le long du signal et les éléments dans la fenêtre sont résumés. Donc, essayez de faire la même chose en utilisant la convolution. Utilisez les paramètres suivants: La sortie souhaitée est: Comme première approche, essayons ce que nous obtenons en convolvant le signal x par le noyau k suivant: La sortie est exactement trois fois plus grande que la valeur attendue. On peut également voir que les valeurs de sortie sont le résumé des trois éléments de la fenêtre. C'est parce que pendant la convolution la fenêtre est glissée le long, tous les éléments en elle sont multipliés par un, puis résumés: yk 1 cdot x 1 cdot x 1 cdot x Pour obtenir les valeurs désirées de y. La sortie sera divisée par 3: Par une formule comprenant la division: Mais ne serait-il pas optimal de faire la division au cours de la convolution Voici l'idée en réarrangant l'équation: Nous utiliserons donc le k noyau suivant: Obtenir la sortie souhaitée: En général: si nous voulons faire la moyenne mobile par convolution ayant une taille de fenêtre de w. Nous allons utiliser le noyau k suivant: Une fonction simple faisant la moyenne mobile est: Un exemple d'utilisation est: Qu'est-ce que le lissage et comment puis-je avoir un tableau dans Matlab qui est le spectre d'amplitude d'un signal de parole (l'amplitude de 128 points de FFT). Comment puis-je lisser cela à l'aide d'une moyenne mobile À partir de ce que je comprends, je devrais prendre une taille de fenêtre d'un certain nombre d'éléments, prendre la moyenne, et cela devient le nouveau 1er élément. Ensuite, déplacer la fenêtre vers la droite par un élément, prendre la moyenne qui devient le 2ème élément, et ainsi de suite. Est-ce vraiment comment ça marche Je ne suis pas sûr moi-même puisque si je fais cela, dans mon résultat final, je vais avoir moins de 128 éléments. Alors, comment fonctionne-t-il et comment cela aide-t-il à lisser les points de données Ou est-il une autre façon que je peux faire le lissage des données a demandé à partir de notre Site pour les programmeurs professionnels et enthousiastes. Pour un spectre que vous voulez probablement la moyenne ensemble (dans la dimension du temps) des spectres multiples plutôt que d'une moyenne courante le long de l'axe de fréquence d'un seul spectre ndash endolith Oct 16 12 à 1:04 endolith deux sont des techniques valables. La moyenne dans le domaine fréquentiel (parfois appelée périodogramme de Danielle) est la même que la fenêtre dans le domaine temporel. La moyenne des périodogrammes multiples (quotspectraquot) est une tentative d'imiter la moyenne d'ensemble requise pour le Periodogram réel (c'est ce que l'on appelle le Periodogram Welch). En outre, comme une question de sémantique, je dirais que quotsmoothingquot est non-causal filtre passe-bas. Voir le filtrage de Kalman contre le lissage de Kalman, le filtrage de Wiener v le lissage de Wiener, etc. Il y a une distinction non triviale et dépend de la mise en œuvre de l'application. Ndash Bryan Dec 12 12 at 19:18 Le lissage peut se faire de plusieurs façons, mais en termes très fondamentaux et généraux, cela signifie que vous égalisez un signal, en mélangeant ses éléments avec leurs voisins. Vous smearblur le signal un peu afin de se débarrasser du bruit. Par exemple, une technique de lissage très simple serait de recalculer chaque élément de signal f (t) à 0.8 de la valeur d'origine, plus 0.1 de chacun de ses voisins: Notez comment les facteurs de multiplication, ou poids, s'ajoutent à un. Donc, si le signal est assez constant, le lissage ne change pas beaucoup. Mais si le signal contenait un changement brusque brusque, alors la contribution de ses voisins aidera à éclaircir ce bruit un peu. Les poids que vous utilisez dans cette fonction de recalcul peuvent être appelés noyau. Une fonction gaussienne unidimensionnelle ou tout autre noyau de base devrait faire dans votre cas. Bon exemple d'un type particulier de lissage: Ci-dessus: signal non lissé Ci-dessous: signal lissé Exemples de quelques noyaux: En plus de la jolie réponse de Junuxx, je voudrais déposer quelques notes. Le lissage est lié au filtrage (malheureusement assez vague article de Wikipedia) - vous devriez choisir le lisse en fonction de ses propriétés. Un de mes préférés est le filtre médian. Il s'agit d'un exemple de filtre non linéaire. Il a des propriétés intéressantes, il préserve les bords et est assez robuste sous grand bruit. Si vous avez un modèle de la façon dont votre signal se comporte un filtre Kalman vaut un coup d'oeil. Son lissage est en fait une estimation bayésienne de la vraisemblance maximale du signal basée sur des observations. Le lissage implique l'utilisation d'informations provenant d'échantillons voisins afin de changer la relation entre les échantillons voisins. Pour les vecteurs finis, aux extrémités, il n'y a pas d'information voisine d'un côté. Vos choix sont: ne pas lisser les extrémités, accepter un vecteur lissé plus court, créer des données et lisser avec cela (dépend de la précision de l'utilisation de toutes les prédictions au large des extrémités), ou peut-être utiliser différents noyaux lissants asymétriques aux extrémités Raccourcissement du contenu d'information dans le signal de toute façon). Réponse Oct 15 12 at 19:44 D'autres ont mentionné comment vous le lissage, Je tiens à mentionner pourquoi le lissage fonctionne. Si vous suréchantillonnez correctement votre signal, il variera relativement peu d'un échantillon à l'autre (temps d'échantillonnage, pixels, etc), et il devrait avoir une apparence lisse globale. En d'autres termes, votre signal contient peu de fréquences élevées, c'est-à-dire des composantes de signaux qui varient à un débit similaire à votre fréquence d'échantillonnage. Pourtant, les mesures sont souvent corrompues par le bruit. Dans une première approximation, nous considérons habituellement que le bruit suit une distribution gaussienne avec moyenne zéro et un certain écart-type qui est simplement ajouté au-dessus du signal. Pour réduire le bruit dans notre signal, nous faisons habituellement les quatre hypothèses suivantes: le bruit est aléatoire, n'est pas corrélé entre les échantillons, a une moyenne de zéro, et le signal est suffisamment suréchantillonné. Avec ces hypothèses, nous pouvons utiliser un filtre moyen glissant. Considérons, par exemple, trois échantillons consécutifs. Etant donné que le signal est fortement sur-échantillonné, on peut considérer que le signal sous-jacent varie linéairement, ce qui signifie que la moyenne du signal sur les trois échantillons serait égale au signal vrai à l'échantillon central. En revanche, le bruit a un zéro moyen et n'est pas corrélé, ce qui signifie que sa moyenne devrait tendre à zéro. Ainsi, on peut appliquer un filtre de moyenne glissante à trois échantillons, où l'on remplace chaque échantillon par la moyenne entre elle-même et ses deux voisins adjacents. Bien sûr, plus nous faisons de fenêtre, plus le bruit sera en moyenne à zéro, mais moins notre hypothèse de linéarité du vrai signal se maintient. Nous devons donc faire un compromis. Un moyen de tenter d'obtenir le meilleur des deux mondes est d'utiliser une moyenne pondérée, où nous donnons des échantillons plus loin des poids plus petits, de sorte que nous avons des effets de bruit moyen à partir de plus grandes gammes, tout en ne pondérant pas vrai signal trop où il dévie de notre linéarité supposition. La façon dont vous devez mettre les poids dépend du bruit, du signal et de l'efficacité de calcul, et, bien sûr, le compromis entre se débarrasser du bruit et couper dans le signal. Notez qu'il ya eu beaucoup de travail au cours des dernières années pour nous permettre de relâcher certaines des quatre hypothèses, par exemple en concevant des systèmes de lissage avec des fenêtres à filtre variable (diffusion anisotrope) ou des systèmes qui n'utilisent pas vraiment les fenêtres (Moyen non local). Répondre Dec 27 12 at 15:10


No comments:

Post a Comment