Wednesday, 25 January 2017

Moyenne Mobile Matlab Sans Boucle

J'essaie de compléter un projet d'affectation matlab avec la question suivante: Écrire une fonction appelée movingaverage qui prend un scalaire appelé x comme argument d'entrée et retourne un scalaire. La fonction utilise un tampon pour contenir les entrées précédentes, et le tampon peut contenir un maximum de 25 entrées. Plus précisément, la fonction doit enregistrer les 25 entrées les plus récentes dans un vecteur (le tampon). Chaque fois que la fonction est appelée, elle copie l'argument d'entrée dans un élément de la mémoire tampon. S'il ya déjà 25 entrées mémorisées dans la mémoire tampon, elle rejette l'élément le plus ancien et sauvegarde celui qui est en cours dans la mémoire tampon. Après avoir enregistré l'entrée dans le tampon, il retourne la moyenne de tous les éléments dans le tampon. La solution que je fournis est la suivante: Selon le niveleur automatique, ma fonction fonctionne correctement lorsque les valeurs 1 à 50 passent consécutivement, mais échoue lorsque les valeurs d'une onde sinusoïdale bruyante passent de façon consécutive (ce qui m'a été expliqué Sorte d'une erreur d'arrondi). Je serais reconnaissant si l'un de vous pourrait me fournir quelques conseils concernant les étapes d'erreur possible dans mon code (ci-dessus). Merci d'avance Je dois 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 devriez lire la documentation conv et cconv pour plus d'informations si vous n'avez pas déjà. Moyenne mobile exponentielle sans For Loop happydude ltanonymoussehotmailgt a écrit dans le message lthe1oepfs61fred. mathworksgt. Merci pour cela. Semble tout à fait proche, mais peut toujours être très différent de l'EMA traditionnelle comme utilisé dans les finances. Gt gt à partir d'un nombre limité de simulations, il semble être très différent de l'EMA pour environ 60 datapoints ou plus. Gt gt toutes les idées pourquoi cela pourrait arriver gt gt nb - l'EMA traditionnelle utilise une SMA comme une valeur initiale parce que la formule EMA appelle une valeur EMA initiale. Comment la fonction de filtre obtient autour de ceci La réponse est que le filtre ne l'obtient pas autour de lui. Pour les 30 premiers points, le filtre s'éloigne du bord d'attaque du vecteur todaysClose. Ces valeurs au-delà du bord sont définies à 0. Cela faussera au moins les 30 premiers points de votre EMA. Vous pouvez voir l'effet en ayant un prix de clôture constant. (1: joursRetour) note 1-alpha Filtre EMA (coefficient, somme (coefficient) , TodaysClose) plot (todaysClose) hold on plot (EMA, r) Vous pouvez amorcer le bord d'attaque du tableau en répliquant la première valeur hors des valeurs daysBack puis le retirer. Cela pourrait vous aider. Par exemple: todaysClose cumsum (randn (100,1)) joursBack 30 pad repmat (todaysClose (1), daysBack, 1) todaysClose padtodaysFermer alpha 2 (daysBack 1) calculer le facteur de lissage alpha coefficient repmat (1-alpha, 1, daysBack). (1: daysBack) note 1-alpha filtre EMA (coefficient, somme (coefficient), todaysClose) EMA EMA (31: fin) Lui donner un coup :) Objet: Moyenne mobile exponentielle sans boucle For De: Bwana happydude ltanonymoussehotmailgt a écrit dans le message lthe3krmglm1fred. mathworksgt. Gt thanks ill lui donner un coup :) Objet: Moyenne mobile exponentielle sans For Loop De: david Bwana ltbwana. mukubwagmailgt a écrit dans le message lti1fpb3noh1fred. mathworksgt. Gt happydude ltanonymoussehotmailgt a écrit dans le message lthe3krmglm1fred. mathworksgt. Gt gt Merci mal lui donner un coup :) gt gt tout construit dans: mathworksaccesshelpdeskhelptoolboxfinancetsmovavg. html Tout le monde sait pourquoi la fonction de filtre décrit ci-dessus donne une sortie différente de celle de la fonction construite dans movavg On Mar 15, 4:50 am, david ltdavidtr . Gmailgt a écrit: gt Bwana ltbwana. muku. Gmailgt a écrit dans le message lti1fpb3no. Fred. mathworksgt. Gt gt happydude ltanonymou. Hotmailgt a écrit dans le message lthe3krmgl. Fred. mathworksgt. Gt gt gt Merci mal lui donner un coup :) gt gt gt tout construit dans: mathworksaccesshelpdeskhelptoolboxfinancetsmovav. Gt gt Tout le monde sait pourquoi la fonction de filtre décrite ci-dessus donne une sortie différente de celle de la fonction construite en movavg Ma conjecture est que c'est parce que vous avez vissé. Mais vous ne nous avez pas montré votre code, alors comment pourrions-nous savoir Bonjour, le deuxième paramètre de la fonction de filtre devrait être (1alpha-1) au lieu de somme (coefficient) peut-être Si vous développez la formule récursive de l'EMA, terme. P. S. (1alpha-1) est la valeur à laquelle converge la somme du coefficient. Pourquoi utiliser une valeur approximative au lieu de la bonne Ou est-ce que je manque quelque chose Matthew Whitaker ltmattlwhitakerREMOVEgmailgt a écrit dans le message lthdv98tdcd1fred. mathworksgt. Gt essayez ce code: gt todaysClose cumsum (randn (100,1)) gt joursBack 30 gt alpha 2 (daysBack 1) calculer le facteur de lissage alpha gt coefficient repmat (1-alpha, 1, daysBack) note 1 - alpha gt filtre EMA (coefficient, somme (coefficient), todaysClose) gt parcelle (todaysClose) gt tenir sur gt parcelle (EMA, r) gt gt espérons que cela aide gt Matt W gt gt gt gt gt happydude ltanonymoussehotmailgt a écrit dans le message lthdv3c35um1fred. Mathworksgt. Gt gt Bonjour, J'essaie de trouver le roulant EMA de 30 jours pour une série chronologique sans utiliser une boucle for (j'ai beaucoup de données). Gt gt gt gt Comme un exampletest c'est quelque chose comme ce que je veux (ci-dessous), mais je trouve que mon résultat final n'est pas vraiment proche de la façon dont il devrait regarder. Quand je l'ai mis ensemble dans Excel ou avec une boucle for il sort correctement, mais je suis dans l'obscurité si je suis en utilisant le filtre correctement ci-dessous. Gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Coefficient Coefficient Coefficient Coefficient Coefficient de Coefficient Coefficient de Coefficient Coefficient Coefficient Coefficient Coefficient de Coefficient ce fut l'un des messages que je levai les yeux groups. googlegroupcomp. soft-sys. matlabtreebrowsefrmthread7b5c0b3146432dd958e9d04b885a576arnum11donegroupcomp. soft-sys. matlabbrowsefrmthread7b5c0b3146432dd948bdf7f81cd8f1973Ftvc3D126doca1c5b8de7a7c428a gt gt gt gt c'est aussi là où je suis le filtre au-dessus du code gt gt groups. googlegroupcomp. soft-sys. matlabbrowsethreadthread1d8d10d5b835550dtvc2qexponentialmovingaveragefilter happydude A écrit dans le message lthdv3c35um1fred. mathworksgt. Gt Bonjour, J'essaie de trouver le roulant EMA de 30 jours pour une série chronologique sans utiliser une boucle for (j'ai beaucoup de données). Gt gt Comme un exampletest c'est quelque chose comme ce que je veux (ci-dessous), mais je trouve que mon résultat final n'est pas vraiment proche de la façon dont il devrait regarder. Quand je l'ai mis ensemble dans Excel ou avec une boucle for il sort correctement, mais je suis dans l'obscurité si je suis en utilisant le filtre correctement ci-dessous. Gt gt Quelqu'un peut-il aider gt gt todaysFermer cumsum (randn (100,1)) gt joursBack 30 gt alpha 2 (daysBack 1) calculer le facteur de lissage alpha gt gt préparer un coefficient pour la fonction de filtre gt coefficient repmat (alpha, 1, daysBack) (1: joursRetour) gt coefficient coefficientsum (coefficient) gt gt Filtre EMA (coefficient, 1, todaysClose) gt gt gt PS ce fut l'un des messages que je levai les yeux groups. googlegroupcomp. soft-sys. matlabtreebrowsefrmthread7b5c0b3146432dd958e9d04b885a576arnum11donegroupcomp. soft-sys. matlabbrowsefrmthread7b5c0b3146432dd948bdf7f81cd8f1973Ftvc3D126doca1c5b8de7a7c428a gt gt c'est aussi où je suis le code de filtre gt groups. googlegroupcomp. soft-sys. matlabbrowsethreadthread1d8d10d5b835550dtvc2qexponentialmovingaveragefilter Avis ci-dessus que les coefficients Pour les données passées ne sont pas justes. La formule est: Prix (t) alphaPrix (t-1) alpha (1-alpha) Prix (t-2) alpha (1-alpha) 2. (1-N).repmat (k, 1, N) 1 Qu'est-ce qu'une liste de surveillance Vous pouvez penser à Votre liste de surveillance en tant que threads que vous avez bookmarked. Vous pouvez ajouter des balises, des auteurs, des fils et même des résultats de recherche à votre liste de surveillance. De cette façon, vous pouvez facilement garder une trace des sujets qui vous intéressent po Pour afficher votre liste de surveillance, cliquez sur le lien quotMus Newsreaderquot. Pour ajouter des éléments à votre liste de surveillance, cliquez sur le lien quotadd to watch listquot au bas de chaque page. Comment ajouter un élément à ma liste de surveillance Pour ajouter des critères de recherche à votre liste de surveillance, recherchez le terme souhaité dans la zone de recherche. Cliquez sur le lien "Ajouter cette recherche à ma liste de surveillance" dans la page des résultats de recherche. Vous pouvez également ajouter une balise à votre liste de surveillance en recherchant la balise avec la directive quottag: tagnamequot où tagname est le nom de la balise que vous souhaitez regarder. Pour ajouter un auteur à votre liste de surveillance, accédez à la page de profil des auteurs et cliquez sur le lien Ajouter cet auteur à ma liste de surveillance, en haut de la page. Vous pouvez également ajouter un auteur à votre liste de surveillance en accédant à un fil que l'auteur a posté et en cliquant sur le quotAjouter cet auteur à ma liste de watchquot lien. Vous serez averti chaque fois que l'auteur fera un post. Pour ajouter un fil à votre liste de surveillance, allez à la page du fil et cliquez sur le lien quotAdd this thread à mon watch list, en haut de la page. À propos des groupes de discussion, des lecteurs de nouvelles et de MATLAB Central Les groupes de discussion Les forums sont un forum mondial ouvert à tous. Les groupes de discussion sont utilisés pour discuter d'une vaste gamme de sujets, faire des annonces et échanger des fichiers. Les discussions sont enchaînées ou regroupées de manière à ce que vous puissiez lire un message posté et toutes ses réponses dans l'ordre chronologique. Cela rend facile de suivre le fil de la conversation, et de voir whatrsquos déjà été dit avant de publier votre propre réponse ou de faire une nouvelle affectation. Le contenu des groupes de discussion est distribué par des serveurs hébergés par diverses organisations sur Internet. Les messages sont échangés et gérés en utilisant des protocoles standard ouverts. Aucune entité unique n'a décrété les groupes de discussion. Il ya des milliers de groupes de discussion, chacun traitant d'un seul sujet ou domaine d'intérêt. MATLAB Central Newsreader affiche et affiche des messages dans le groupe de discussion comp. soft-sys. matlab. Comment lire ou publier dans les groupes de discussion Vous pouvez utiliser le lecteur de nouvelles intégré au site Web de MATLAB Central pour lire et publier des messages dans ce groupe de discussion. MATLAB Central est hébergé par MathWorks. Les messages affichés via le lecteur de nouvelles MATLAB Central sont vus par tout le monde à l'aide des groupes de discussion, peu importe comment ils accèdent aux groupes de discussion. Il existe plusieurs avantages à utiliser MATLAB Central. Un compte Votre compte MATLAB Central est lié à votre compte MathWorks pour un accès facile. Utilisez l'adresse courriel de votre choix Le lecteur MATLAB Central vous permet de définir une autre adresse e-mail que votre adresse postale, évitant le fouillis dans votre boîte aux lettres principale et réduisant le spam. Contrôle du courrier indésirable La plupart des courriers indésirables des groupes de discussion sont filtrés par le lecteur de nouvelles MATLAB Central. Étiquetage Les messages peuvent être étiquetés avec une étiquette appropriée par tout utilisateur connecté. Les balises peuvent être utilisées comme mots-clés pour trouver des fichiers particuliers intéressants ou pour classer vos annonces marquées d'un signet. Vous pouvez choisir d'autoriser d'autres personnes à afficher vos balises, et vous pouvez afficher ou rechercher d'autres balises ainsi que celles de la communauté en général. Le marquage permet de voir à la fois les grandes tendances et les idées et applications plus petites et plus obscures. Listes de surveillance La mise en place de listes de surveillance vous permet d'être informé des mises à jour effectuées sur les annonces sélectionnées par auteur, thread ou toute variable de recherche. Vos notifications de liste de surveillance peuvent être envoyées par courrier électronique (résumé journalier ou immédiat), affichées dans Mon lecteur de nouvelles ou envoyées via le flux RSS. Autres moyens d'accéder aux groupes de discussion Utiliser un lecteur de nouvelles par l'intermédiaire de votre école, de votre employeur ou de votre fournisseur d'accès Internet Payer l'accès à un groupe de discussion auprès d'un fournisseur commercial Utiliser les groupes Google Mathforum. org fournit un lecteur de nouvelles avec accès au groupe comp. soft sys. matlab Exécutez votre propre serveur. Pour les instructions typiques, voir: slyckng. phppage2 Sélectionnez votre pays


No comments:

Post a Comment