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 de 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 fausses: D'abord votre convolution doit être divisée 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: La meilleure façon de faire cela (à mon avis) serait d'utiliser un buffer circulaire pour stocker vos images. Dans un buffer circulaire ou en anneau, l'élément de données le plus ancien du tableau est écrasé par l'élément le plus récent introduit dans le tableau. Les bases de la réalisation d'une telle structure sont décrites dans la courte vidéo de Mathworks. Implémentation d'un tampon circulaire simple. Pour chaque itération de votre boucle principale qui traite d'une seule image, il suffit de charger une nouvelle image dans le buffer circulaire, puis d'utiliser MATLAB s construit dans la fonction moyenne pour prendre la moyenne efficacement. Si vous devez appliquer une fonction de fenêtre aux données, puis faire une copie temporaire des cadres multiplié par la fonction de fenêtre et prendre la moyenne de la copie à chaque itération de la boucle. A répondu 6 août à 10:11 calcule une sorte de moyenne mobile pour chacun des 10 bandes sur toutes vos images. Cette ligne calcule une moyenne mobile de la valeur moyenne sur vos images: Pour les deux, vous voulez ajouter une structure de tampon qui ne conserve que les 10 dernières images. Pour simplifier, vous pouvez également tout garder en mémoire. Voici un exemple pour Yout: Changez cette ligne: (Ajouter une dimension) Et changez ceci: Ensuite, pour afficher l'utilisation Vous ferez sth. Similaire pour meanvalue a répondu Aug 6 12 at 14:19 Votre réponse 2017 Stack Exchange, Inc
No comments:
Post a Comment