Friday, February 17, 2017

Moyenne Mobile Et Convolution

Im écriture d'une fonction moyenne mobile qui utilise la fonction de convolution dans numpy, qui devrait être équivalente à une (moyenne mobile pondérée). Lorsque mes poids sont tous égaux (comme dans une moyenne arithmétique simple), il fonctionne très bien: Cependant, quand j'essaie d'utiliser une moyenne pondérée au lieu de (pour les mêmes données) 3.667,4.667,5.667,6.667. Je m'attends, je reçois Si je supprime le drapeau valide, je ne vois même pas les valeurs correctes. Je voudrais vraiment utiliser convolution pour le WMA ainsi que MA, car il rend le code plus propre (même code, poids différents) et sinon je pense que je dois boucler toutes les données et prendre des tranches. Quelques idées sur ce comportement En utilisant MATLAB, comment puis-je trouver la moyenne mobile de 3 jours d'une colonne spécifique d'une matrice et d'ajouter la moyenne mobile à cette matrice J'essaie de calculer la moyenne mobile de 3 jours de bas en haut de la matrice . J'ai fourni mon code: Étant donné la matrice a et le masque suivants: J'ai essayé d'implémenter la commande conv mais je reçois une erreur. Voici la commande conv que j'ai essayé d'utiliser sur la 2ème colonne de la matrice a: La sortie que je désire est donnée dans la matrice suivante: Si vous avez des suggestions, je l'apprécierais beaucoup. Merci Pour la colonne 2 de la matrice a, je calcule la moyenne mobile de 3 jours comme suit et en plaçant le résultat dans la colonne 4 de la matrice a (I a renommé la matrice a comme 39desiredOutput39 pour l'illustration). La moyenne de 3 jours de 17, 14, 11 est 14 la moyenne de 3 jours de 14, 11, 8 est 11 la moyenne de 3 jours de 11, 8, 5 est 8 et la moyenne de 3 jours de 8, 5, 2 est 5. Il n'y a aucune valeur dans les 2 lignes inférieures pour la 4ème colonne parce que le calcul pour la moyenne mobile de 3 jours commence au bas. La sortie 39valid39 ne sera pas montrée jusqu'à au moins 17, 14 et 11. J'espère que cela fait sens ndash Aaron Jun 12 13 at 1:28 En général, il serait utile si vous voulez montrer l'erreur. Dans ce cas vous faites deux choses mal: d'abord votre convolution doit être divisé par trois (ou la longueur de la moyenne mobile) Deuxièmement, notez la taille de c. Vous ne pouvez pas simplement mettre c dans a. La façon typique d'obtenir une moyenne mobile serait d'utiliser les mêmes: mais cela ne ressemble pas à ce que vous voulez. Au lieu de cela, vous êtes forcé d'utiliser quelques lignes: Le scientifique et ingénieurs Guide de traitement du signal numérique Par Steven W. Smith, Ph. D. Comme le nom l'indique, le filtre à moyenne mobile fonctionne en faisant la moyenne d'un nombre de points à partir du signal d'entrée pour produire chaque point dans le signal de sortie. Dans la forme d'équation, ceci est écrit: Où est le signal d'entrée, est le signal de sortie, et M est le nombre de points dans la moyenne. Par exemple, dans un filtre à moyenne mobile à 5 points, le point 80 du signal de sortie est donné par: En variante, le groupe de points du signal d'entrée peut être choisi symétriquement autour du point de sortie: ceci correspond à la modification de la somme dans Eq . 15-1 de: j 0 à M -1, à: j - (M -1) 2 à (M -1) 2. Par exemple, dans un filtre à moyenne mobile à 10 points, l'indice, j. Peut aller de 0 à 11 (moyenne d'un côté) ou de -5 à 5 (moyenne symétrique). La moyenne symétrique requiert que M soit un nombre impair. La programmation est légèrement plus facile avec les points sur un seul côté cependant, cela produit un décalage relatif entre les signaux d'entrée et de sortie. Vous devez reconnaître que le filtre de moyenne mobile est une convolution à l'aide d'un noyau de filtre très simple. Par exemple, un filtre à 5 points a le noyau de filtre: 82300, 0, 15, 15, 15, 15, 15, 0, 08230. C'est-à-dire que le filtre à moyenne mobile est une convolution du signal d'entrée avec une impulsion rectangulaire ayant une Zone de un. Le tableau 15-1 montre un programme pour implémenter le filtre de la moyenne mobile.


No comments:

Post a Comment