Wednesday, 1 February 2017

Déplacement Moyenne Sans Débordement

J'essaie de trouver un moyen de calculer une moyenne cumulative mobile sans stocker le total et le total des données reçues jusqu'à présent. Je suis venu avec deux algorithmes, mais les deux ont besoin de stocker le compte: nouvelle moyenne ((ancien nombre de données anciennes) les prochaines données) compter suivante nouvelle moyenne vieille moyenne (prochaines données - vieille moyenne) Est de plus en plus grande, ce qui entraîne une perte de précision dans la moyenne résultante. La première méthode utilise le comptage ancien et le compte suivant qui sont évidemment à part. Cela m'a fait penser que peut-être il ya un moyen d'enlever le compte, mais malheureusement je ne l'ai pas encore trouvé. Il m'a un peu plus loin cependant, résultant dans la deuxième méthode mais compte encore est présent. Est-il possible, ou suis-je simplement à la recherche de l'impossible demandé Sep 28 12 à 8:46 J'ai essayé quelques techniques de moyennage courants pour lisser le changement de données ADC dans AtMega48 pour contrôler les lumières (PWM) lors de la rotation d'un pot (ADC). Les filtres (pseudo codes): J'ai remarqué que les filtres sont très agréables. Mais lent dans la réponse qui est attendue. Je recherche des techniques comme la moyenne mobile exponentielle. Dit être plus réactif. Existe-t-il un autre comme celui-ci Comme il est dit: où est entre 0 et 1. Comment coder et optimiser les codes sages (sans utiliser des flotteurs) Ou Comment convertir les flotteurs en nombres entiers correspondants pour faire le code petit, rapide et réactif. Et j'ai gardé 1 autre alors qu'il ne fonctionnera pas comme prévu. Parce que Idve modifie toutes les variables à flotter. S'il vous plaît ne pas se concentrer sur la déclaration suivante pour le moment mais note. Maintenir les flotteurs dans ma base de code est de remplir la mémoire programme de 45 à 137, dans le cas de Vous pouvez mettre en œuvre avec un minimum de frais généraux en limitant les fractions binaires. J'ai utilisé cela avec de bons résultats. Prenez le résultat existant, Shift it N place droit à diviser par 2N Soustrayez-le du résultat existant. Ajouter de nouvelles données Ce n'est pas aussi rapide à changer avec un changement de pas dans les données d'entrée que vous le souhaitez, mais est facile à mettre en œuvre et assez efficace comme un filtre dans de nombreux cas. Vous pouvez accélérer sa réponse en prenant des décisions informelles quant à son comportement dans des cas trop différents. Par exemple, maintenir un nombre d'entrées séquentielles qui sont plus que certaines limites différentes du résultat existant. Si ce nombre dépasse un certain seuil, changez le taux de division N par un facteur. Par exemple N est généralement 4-résultats sont décalés à droite 4 fois 16 diviser. Si l'entrée est plus de xxx loin de la réponse ne faites que deux changements à droite et multiplier l'échantillon par 4 avant d'ajouter. J'ai essayé de trouver un moyen de calculer une moyenne cumulative mobile sans stocker le compte et le total des données qui sont reçues à ce jour. Je suis venu avec deux algorithmes, mais les deux ont besoin de stocker le compte: nouvelle moyenne ((ancien nombre de données anciennes) les prochaines données) compter suivante nouvelle moyenne vieille moyenne (prochaines données - vieille moyenne) Est de plus en plus grande, ce qui entraîne une perte de précision dans la moyenne résultante. La première méthode utilise le comptage ancien et le compte suivant qui sont évidemment à part. Cela m'a fait penser que peut-être il ya un moyen d'enlever le compte, mais malheureusement, je ne l'ai pas encore trouvé. Il m'a un peu plus loin cependant, résultant dans la deuxième méthode mais compte encore est présent. Est-il possible, ou suis-je juste à la recherche de l'impossible demandé Sep 28 12 at 8:46


No comments:

Post a Comment