Saturday, January 14, 2017

Matlab Filtrant Moyenne Mobile Pondéré

Description: Matlab comprend des fonctions appelées movavg et tsmovavg (moyenne mobile de la série chronologique) dans la boîte à outils financières, movAv est conçu pour reproduire la fonctionnalité de base de celles-ci. Le code ici fournit un bel exemple de gestion des index dans les boucles, ce qui peut être source de confusion pour commencer. Ive délibérément gardé le code court et simple pour garder ce processus clair. MovAv effectue une moyenne mobile simple qui peut être utilisée pour récupérer des données bruyantes dans certaines situations. Il fonctionne en prenant la moyenne de l'entrée (y) sur une fenêtre temporelle glissante, dont la taille est spécifiée par n. Plus grand est n, plus la quantité de lissage de l'effet de n est relative à la longueur du vecteur d'entrée y. Et effectivement (ainsi, sorte de) crée un filtre de fréquence passe-bas - voir la section exemples et considérations. Comme la quantité de lissage fournie par chaque valeur de n est relative à la longueur du vecteur d'entrée, il vaut toujours la peine de tester différentes valeurs pour voir ce qui convient. Rappelez-vous aussi que n points sont perdus sur chaque moyenne si n est 100, les 99 premiers points du vecteur d'entrée ne contiennent pas assez de données pour une moyenne de 100 p. Ceci peut être évité quelque peu en empilant des moyennes, par exemple, le code et le graphique ci-dessous comparent un certain nombre de moyennes de fenêtre de longueur différentes. Notez comment lisse 1010pt est comparé à une seule moyenne 20pt. Dans les deux cas, 20 points de données sont perdus au total. Créer xaxis x1: 0.01: 5 Générer du bruit noiseReps 4 bruit repmat (randn (1, ceil (numel (x) noiseReps)), noiseReps, 1) remodeler le bruit (noise, 1, X) 10noise (1: length (x)) Moyennes de Perfrom: y2 movAv (y, 10) 10 pt y3 movAv (y2, 10) 1010 pt y4 movAv (y, 20) 20 pt y5 movAv (y, 40) 40 pt (X, y, y2, y3, y4, y5, y6) légende (données brutes, moyenne mobile 10pt, 1010pt, 20pt, 40pt, 100pt) xlabel (x) ylabel Y) title (Comparaison des moyennes mobiles) movAv. m fonction de la fonction run-through movAv (y, n) La première ligne définit le nom des fonctions, les entrées et les sorties. L'entrée x doit être un vecteur de données pour effectuer la moyenne sur, n doit être le nombre de points pour effectuer la moyenne sur la sortie contiendra les données moyennes renvoyées par la fonction. Pré-affecter la sortie outputNaN (1, numel (y)) Trouver le point médian de n midPoint round (n2) Le travail principal de la fonction se fait dans la boucle for, mais avant de démarrer deux choses sont préparées. Tout d'abord la sortie est pré-allouée comme NaNs, cela a servi à deux fins. Tout d'abord, la préallocation est généralement une bonne pratique car elle réduit la mémoire de jonglage Matlab a à faire, d'autre part, il est très facile de placer les données moyennées dans une sortie de la même taille que le vecteur d'entrée. Cela signifie que le même xaxis peut être utilisé ultérieurement pour les deux, ce qui est pratique pour le tracé, sinon les NaN peuvent être enlevés plus tard dans une ligne de code (sortie de sortie) (La variable midPoint sera utilisée pour aligner les données dans le vecteur de sortie. N 10, 10 points seront perdus car, pour les 9 premiers points du vecteur d'entrée, il n'y a pas assez de données pour prendre une moyenne de 10. La sortie sera plus courte que l'entrée, elle doit être correctement alignée. Être utilisée pour qu'une quantité égale de données soit perdue au début et à la fin et que l'entrée soit maintenue alignée sur la sortie par les tampons NaN créés lors de la préallocation de la sortie. (A: b) ban Calculer la moyenne de sortie (amidPoint) moyenne (y (a: b)) end Dans la boucle for elle-même, une moyenne est prise sur chaque segment consécutif de l'entrée. Définie comme 1 jusqu'à la longueur de l'entrée (y), moins les données qui seront perdues (n). Si l'entrée a 100 points de long et n est 10, la boucle va de (a) 1 à 90. Signifie a fournit le premier indice du segment à évaluer. Le deuxième indice (b) est simplement an-1. Donc sur la première itération, a1. N10. Donc b 11-1 10. La première moyenne est prise sur y (a: b). Ou x (1:10). La moyenne de ce segment, qui est une valeur unique, est stockée dans la sortie à l'index amidPoint. Ou 156. Sur la deuxième itération, a2. B 210-1 11. De sorte que la moyenne est prise sur x (2:11) et stockée dans la sortie (7). Sur la dernière itération de la boucle pour une entrée de longueur 100, a91. B 9010-1 100 de sorte que la moyenne est prise en compte sur x (91: 100) et mémorisée dans la sortie (95). Ceci laisse la sortie avec un total de n (10) valeurs de NaN à l'indice (1: 5) et (96: 100). Exemples et considérations Les moyennes mobiles sont utiles dans certaines situations, mais elles ne sont pas toujours le meilleur choix. Voici deux exemples où ils ne sont pas nécessairement optimale. Étalonnage du microphone Ce jeu de données représente les niveaux de chaque fréquence produite par un haut-parleur et enregistrée par un microphone avec une réponse linéaire connue. La sortie du haut-parleur varie avec la fréquence, mais nous pouvons corriger cette variation avec les données d'étalonnage - la sortie peut être ajustée au niveau pour tenir compte des fluctuations de l'étalonnage. Notez que les données brutes sont bruyantes - cela signifie qu'un petit changement de fréquence semble nécessiter un changement de niveau important et irrégulier. Est-ce réaliste ou est-ce un produit de l'environnement d'enregistrement Il est raisonnable dans ce cas d'appliquer une moyenne mobile qui lisse la courbe de niveau de fréquence pour fournir une courbe d'étalonnage qui est légèrement moins erratique. Mais pourquoi est-ce pas optimal dans cet exemple Plus de données serait mieux - plusieurs étalonnages en moyenne ensemble détruirait le bruit dans le système (aussi longtemps que son aléatoire) et de fournir une courbe avec moins de détail subtile perdu. La moyenne mobile ne peut que l'approximer, et peut supprimer certains plongeons et pics de fréquence plus élevés de la courbe qui existent réellement. Les ondes sinusoïdales L'utilisation d'une moyenne mobile sur les ondes sinusoïdales souligne deux points: La question générale du choix d'un nombre raisonnable de points pour effectuer la moyenne sur. Son simple, mais il existe des méthodes plus efficaces d'analyse du signal que la moyenne des signaux oscillants dans le domaine du temps. Dans ce graphique, l'onde sinusoïdale originale est tracée en bleu. Le bruit est ajouté et tracé comme la courbe orange. Une moyenne mobile est effectuée à différents nombres de points pour voir si l'onde originale peut être récupérée. 5 et 10 points fournissent des résultats raisonnables, mais ne supprimez pas le bruit entièrement, où comme un plus grand nombre de points commencent à perdre détails d'amplitude que la moyenne s'étend sur différentes phases (rappelez-vous la vague oscille autour de zéro, et la moyenne (-1 1) . Une autre approche consisterait à construire un filtre passe-bas que celui qui peut être appliqué au signal dans le domaine de la fréquence. Im pas entrer dans le détail car il va au-delà de la portée de cet article, mais comme le bruit est considérablement plus fréquente que la fréquence fondamentale des ondes, il serait assez facile dans ce cas de construire un filtre passe-bas que supprimera la haute fréquence Noise. What sont les inconvénients de la moyenne mobile de filtrage lors de l'utilisation avec des données de séries chronologiques Il ya un peu d'une confusion dans la terminologie dans le traitement du signal. Les filtres de moyenne mobile sont des filtres calculant une série de moyens pondérés du signal d'entrée. En plus du commentaire de Balaacutezs Kotoszrsquo, il est important que les poids ne soient pas égaux, c'est-à-dire que vous calculez la moyenne arithmétique courante du signal d'entrée. Ce type de filtre est généralement appelé moyenne courante. Vous ne devriez pas utiliser ceux parce qu'ils éliminent certaines fréquences dans votre spectre et d'autres sont inversés. Thatrsquos mauvais si vous êtes intéressé par une bande de fréquence spécifique, qui est soit éliminé (pas de réponse) ou inversé (changement de signe et donc causalité) (voir Page 177 dans mon livre MATLAB Recettes pour les sciences de la Terre, Springer 2010). Heres a MATLAB Exemple pour voir l'effet des moyens de course. A titre d'exemple, l'application du filtre à un signal avec une période d'approximativement 10.09082 élimine complètement ce signal. De plus, comme l'amplitude de la réponse en fréquence est l'absolue de la réponse en fréquence complexe, la réponse en magnitude est réellement négative entre 0,3633 et entre 0,4546 et la fréquence de Nyquist. Toutes les composantes de signal ayant des fréquences comprises dans ces intervalles sont mises en miroir sur l'axe t. A titre d'exemple, nous essayons une onde sinusoïdale avec une période de 7.0000, par ex. Une fréquence d'environ 0,1429, qui est dans le premier intervalle avec une réponse de grandeur négative: t (1: 100) x10 2sin (2pit7) b10 unités (1,11) 11 m10 longueur (b10) y10 filtre (b10,1, x10 ) Y10 y10 (1 (m10-1) 2: fin (m10-1) 2,1) y10 (fin 1: fin 10-1,1) zéros (m10-1,1) tracé (t, x10, t, y10 ) Voici la réponse d'amplitude du filtre montrant les zéros et l'écrêtage: h, w freqz (b10,1,512) f 1w (2pi) magnitude abs (h) tracé (f, magnitude) L'onde sinusoïdale avec une période de 7 expériences Une réduction d'amplitude de Autour de 80 mais aussi signe changé comme vous pouvez le voir de l'intrigue. L'élimination de certaines fréquences et le retournement du signal ont une conséquence importante tout en interprétant la causalité dans les sciences de la terre. Ces filtres, bien qu'ils soient offerts en standard dans les tableurs pour le lissage, doivent donc être complètement évités. En alternative, des filtres avec une réponse en fréquence spécifique doivent être utilisés, comme un filtre passe-bas Butterworth. La sortie tsmovavg (tsobj, s, lag) renvoie la moyenne mobile simple pour l'objet série chronologique financière, tsobj. Lag indique le nombre de points de données précédents utilisés avec le point de données courant lors du calcul de la moyenne mobile. La sortie tsmovavg (vecteur, s, lag, dim) renvoie la moyenne mobile simple pour un vecteur. Lag indique le nombre de points de données précédents utilisés avec le point de données courant lors du calcul de la moyenne mobile. La sortie tsmovavg (tsobj, e, timeperiod) renvoie la moyenne mobile pondérée exponentielle pour l'objet série chronologique financière, tsobj. La moyenne mobile exponentielle est une moyenne mobile pondérée, où timeperiod spécifie la période de temps. Les moyennes mobiles exponentielles réduisent le décalage en appliquant plus de poids aux prix récents. Par exemple, une moyenne mobile exponentielle de 10 périodes pondère le prix le plus récent de 18,18. Pourcentage exponentiel 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1). La sortie tsmovavg (vecteur, e, timeperiod, dim) renvoie la moyenne mobile pondérée exponentielle pour un vecteur. La moyenne mobile exponentielle est une moyenne mobile pondérée, où timeperiod spécifie la période de temps. Les moyennes mobiles exponentielles réduisent le décalage en appliquant plus de poids aux prix récents. Par exemple, une moyenne mobile exponentielle de 10 périodes pondère le prix le plus récent de 18,18. (2 (durée 1)). La sortie tsmovavg (tsobj, t, numperiod) renvoie la moyenne mobile triangulaire pour la série chronologique de temps, tsobj. La moyenne mobile triangulaire double les données. Tsmovavg calcule la première moyenne mobile simple avec la largeur de la fenêtre de ceil (numperiod 1) 2. Ensuite, il calcule une seconde moyenne mobile simple sur la première moyenne mobile avec la même taille de fenêtre. La sortie tsmovavg (vecteur, t, numperiod, dim) renvoie la moyenne mobile triangulaire pour un vecteur. La moyenne mobile triangulaire double les données. Tsmovavg calcule la première moyenne mobile simple avec la largeur de la fenêtre de ceil (numperiod 1) 2. Ensuite, il calcule une seconde moyenne mobile simple sur la première moyenne mobile avec la même taille de fenêtre. La sortie tsmovavg (tsobj, w, weights) renvoie la moyenne mobile pondérée de l'objet série chronologique financière, tsobj. En fournissant des poids pour chaque élément dans la fenêtre mobile. La longueur du vecteur de poids détermine la taille de la fenêtre. Si des facteurs de poids plus importants sont utilisés pour des prix plus récents et des facteurs plus faibles pour les prix antérieurs, la tendance est plus sensible aux changements récents. La sortie tsmovavg (vecteur, w, poids, dim) renvoie la moyenne mobile pondérée pour le vecteur en fournissant des poids pour chaque élément de la fenêtre en mouvement. La longueur du vecteur de poids détermine la taille de la fenêtre. Si des facteurs de poids plus importants sont utilisés pour des prix plus récents et des facteurs plus faibles pour les prix antérieurs, la tendance est plus sensible aux changements récents. La sortie tsmovavg (tsobj, m, numperiod) renvoie la moyenne mobile modifiée pour l'objet série chronologique financière, tsobj. La moyenne mobile modifiée est semblable à la moyenne mobile simple. Considérons l'argument numperiod comme le décalage de la moyenne mobile simple. La première moyenne mobile modifiée est calculée comme une moyenne mobile simple. Les valeurs suivantes sont calculées en ajoutant le nouveau prix et en soustrayant la dernière moyenne de la somme obtenue. La sortie tsmovavg (vecteur, m, numperiod, dim) renvoie la moyenne mobile modifiée pour le vecteur. La moyenne mobile modifiée est semblable à la moyenne mobile simple. Considérons l'argument numperiod comme le décalage de la moyenne mobile simple. La première moyenne mobile modifiée est calculée comme une moyenne mobile simple. Les valeurs suivantes sont calculées en ajoutant le nouveau prix et en soustrayant la dernière moyenne de la somme obtenue. Dim 8212 dimension pour fonctionner le long d'un entier positif avec une valeur 1 ou 2 Dimension à utiliser, spécifié comme un entier positif avec une valeur de 1 ou 2. dim est un argument d'entrée facultatif et s'il n'est pas inclus comme entrée, la valeur par défaut La valeur 2 est supposée. La valeur par défaut de dim 2 indique une matrice orientée vers les lignes, chaque ligne étant une variable et chaque colonne étant une observation. Si dim 1. l'entrée est supposée être un vecteur colonne ou une matrice orientée colonne, où chaque colonne est une variable et chaque ligne une observation. E 8212 Indicateur pour le vecteur de caractères de moyenne mobile exponentielle La moyenne mobile exponentielle est une moyenne mobile pondérée, où la période de temps est la période de temps de la moyenne mobile exponentielle. Les moyennes mobiles exponentielles réduisent le décalage en appliquant plus de poids aux prix récents. Par exemple, une moyenne mobile exponentielle de 10 périodes pondère le prix le plus récent de 18,18. Pourcentage exponentiel 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1) période de temps 8212 Longueur de la période non négative entière Sélectionnez votre pays


No comments:

Post a Comment