Sunday 9 July 2017

Exponencial Moving Average Without For Loop Matlab


Usando o MATLAB, como posso encontrar a média móvel de 3 dias de uma coluna específica de uma matriz e acrescentar a média móvel a essa matriz, estou tentando calcular a média móvel de 3 dias de baixo para o topo da matriz. Eu forneci meu código: dada a seguinte matriz a e máscara: tentei implementar o comando conv, mas recebo um erro. Aqui está o comando conv que eu tentei usar na 2ª coluna da matriz a: A saída que eu desejo é dada na seguinte matriz: Se você tiver alguma sugestão, eu apreciaria muito. Obrigado Para a coluna 2 da matriz a, estou informando a média móvel de 3 dias da seguinte forma e colocando o resultado na coluna 4 da matriz a (Eu renomeado a matriz a como 39desiredOutput39 apenas para ilustração). A média de 3 dias de 17, 14 e 11 é de 14 a média de 3 dias de 14, 11, 8 é 11, a média de 3 dias de 11, 8, 5 é de 8 e a média de 3 dias de 8, 5, 2 é 5. Não há valor nas 2 linhas inferiores para a 4ª coluna porque a computação para a média móvel de 3 dias começa na parte inferior. A saída 39valid39 não será mostrada até pelo menos 17, 14 e 11. Espero que isso faça sentido ndash Aaron 12 de junho 13 às 1:28 Em geral, isso ajudaria se você mostrar o erro. Neste caso, você está fazendo duas coisas erradas: primeiro sua convolução precisa ser dividida por três (ou o comprimento da média móvel) Em segundo lugar, observe o tamanho de c. Você não pode simplesmente se encaixar em c. A maneira típica de obter uma média móvel seria usar o mesmo: mas isso não se parece com o que você deseja. Em vez disso, você é obrigado a usar algumas linhas: preciso calcular uma média móvel em uma série de dados, dentro de um loop for. Eu tenho que obter a média móvel em N9 dias. A matriz Im computação é uma série de 365 valores (M), que em si é valores médios de outro conjunto de dados. Eu quero traçar os valores médios dos meus dados com a média móvel em um gráfico. Eu gritei um pouco sobre as médias móveis e o comando conv e encontrei algo que eu tentei implementar no meu código .: então, basicamente, eu calculo o meu significado e traço-o com uma média móvel (errada). Eu escolhi o valor de Wts diretamente do site Mathworks, então isso é incorreto. (Fonte: mathworks. nlhelpeconmoving-average-trend-estimate. html) Meu problema, porém, é que eu não entendo o que é isso. Alguém poderia explicar Se isso tem algo a ver com os pesos dos valores: isso é inválido neste caso. Todos os valores são ponderados da mesma forma. E se eu estiver fazendo isso inteiramente errado, eu poderia obter alguma ajuda com ele Meus mais sinceros agradecimentos. Perguntou 23 de setembro 14 às 19:05 Usando conv é uma excelente maneira de implementar uma média móvel. No código que você está usando, é o quanto você está pesando cada valor (como você adivinhou). A soma desse vetor deve ser sempre igual a uma. Se você deseja pesar cada valor de forma uniforme e fazer um tamanho N, mover o filtro, então você gostaria de fazer. Usando o argumento válido em conv resultaria em ter menos valores na Ms do que em M. Use o mesmo se você não se importar com os efeitos de Zero preenchimento. Se você tiver a caixa de ferramentas de processamento de sinal, você pode usar o cconv se quiser testar uma média móvel circular. Algo como Você deve ler a documentação conv e cconv para obter mais informações, se você não tiver havido. A média móvel expressa sem o Loop happydude ltanonymoussehotmailgt escreveu na mensagem lthe1oepfs61fred. mathworksgt. Obrigado por isso. Parece bastante próximo, mas ainda pode ser bastante diferente do EMA tradicional, como usado em finanças. Gt gt de um número limitado de simulações, parece ser bastante diferente da EMA por cerca de 60 pontos de dados ou assim. Gt gt quaisquer idéias por que isso pode acontecer gt gt nb - o EMA tradicional usa um SMA como um valor inicial porque a fórmula EMA exige um valor EMA inicial. Como a função Filtrar contornar isso. A resposta é que o filtro não o contorna. Para os primeiros 30 pontos, o filtro irá sair da borda principal do vetor Fóssil de hoje. Esses valores após a borda são definidos como 0. Isso distorcerá pelo menos os primeiros 30 pontos da sua EMA. Você pode ver o efeito ao ter um preço de fechamento constante. De momento, alguns deles (100,1) 100 diasBack 30 alpha 2 (daysBack 1) calculam coeficiente de alisamento coeficiente alfa repmat (1-alpha, 1, daysBack). (1: daysBack) nota 1-alfa filtro EMA (coeficiente, soma (coeficiente) , Em seguida fechar) trama (fecho de hoje) segurar o enredo (EMA, r) Você poderia substituir a borda principal da matriz replicando o primeiro valor para fora dos valores do daysBack e, em seguida, tire-o. Isso pode ajudar. Então: todaysClose cumsum (randn (100,1)) daysBack 30 pad repmat (todaysClose (1), daysBack, 1) todaysClose padtodaysClose alpha 2 (daysBack 1) calcular coeficiente de alívio coeficiente alfa repmat (1-alpha, 1, daysBack). (1: daysBack) nota 1-alfa Filtro EMA (coeficiente, soma (coeficiente), hoje fechado) EMA EMA (31: fim) remove a trama da almofada (fecho de hoje (31: fim)) espera na trama (EMA, r) Dê um tiro :) Assunto: Exponencial Moving Average without For Loop From: Bwana happydude ltanonymoussehotmailgt escreveu na mensagem lthe3krmglm1fred. mathworksgt. Gt obrigado, dê um tiro :) Assunto: Exponential Moving Average without For Loop From: david Bwana ltbwana. mukubwagmailgt escreveu na mensagem lti1fpb3noh1fred. mathworksgt. Gt happydude ltanonymoussehotmailgt escreveu na mensagem lthe3krmglm1fred. mathworksgt. Gt gt obrigado, dê um tiro :) gt gt tudo construído: mathworksaccesshelpdeskhelptoolboxfinancetsmovavg. html Alguém sabe por que a função de filtro descrita acima dá uma saída diferente da função de movimentação incorporada. Em 15 de março, 4:50 am, david ltdavidtr . Gmailgt escreveu: gt Bwana ltbwana. muku. Gmailgt escreveu na mensagem lti1fpb3no. Fred. mathworksgt. Gt gt happydude ltanonymou. Hotmailgt escreveu na mensagem lthe3krmgl. Fred. mathworksgt. Gt gt gt thanks, dê um tiro :) gt gt gt gt tudo incluído: mathworksaccesshelpdeskhelptoolboxfinancetsmovav. Gt gt Alguém sabe por que a função de filtro descrita acima dá uma saída diferente da função de movimento incorporada. Meu palpite é que é porque você está ferrado. Mas você não nos mostrou seu código, então, como podemos saber Olá, o segundo parâmetro da função de filtro deve ser (1alpha-1) em vez de somar (coeficiente) talvez Se você expandir a fórmula recursiva da EMA, você encontrará que prazo. P. S. (1alfa-1) é o valor ao qual a soma do coeficiente converge. Por que usar um valor aproximado em vez do direito Ou estou faltando algo Matthew Whitaker ltmattlwhitakerREMOVEgmailgt escreveu na mensagem lthdv98tdcd1fred. mathworksgt. Gt tente este código: gt todaysFechar cumsum (randn (100,1)) gt daysBack 30 gt alpha 2 (daysBack 1) calcular o factor de alisamento alpha gt coeficiente repmat (1-alpha, 1, daysBack). (1: daysBack) nota 1 - alpha gt EMA filtro (coeficiente, soma (coeficiente), hoje fechado) gt trama (hoje fechado) gt espera em gt plot (EMA, r) gt gt Espero que isso ajude gt gt gt gt gt gt happydude ltanonymoussehotmailgt escreveu na mensagem lthdv3c35um1fred. Mathworksgt. Gt gt Olá, estou tentando encontrar o EMA de 30 dias para uma série de tempo sem usar um loop for (eu tenho muitos dados). Como exemplo, isto é algo como o que eu quero (abaixo), mas estou descobrindo que o meu resultado final não é muito próximo de como ele deveria procurar. Quando eu coloquem isso no Excel ou com um loop for, ele aparece corretamente, mas estou no escuro se eu estiver usando o filtro corretamente abaixo. Gt gt gt gt Alguém pode ajudar gt gt gt gt todaysFechar cumsum (randn (100,1)) gt gt daysBack 30 gt gt alpha 2 (daysBack 1) calcular o factor de suavização alpha gt gt gt gt preparar um coeficiente para a função de filtro gt gt Coeficiente repmat (alpha, 1, daysBack). (1: daysBack) gt gt coeficiente coeficiente (coeficiente) gt gt gt gt EMA filtro (coeficiente, 1, hoje fechado) gt gt gt gt gt PS este foi um dos postos I Observava-se groups. googlegroupcomp. soft-sys. matlabtreebrowsefrmthread7b5c0b3146432dd958e9d04b885a576arnum11donegroupcomp. soft-sys. matlabbrowsefrmthread7b5c0b3146432dd948bdf7f81cd8f1973Ftvc3D126doca1c5b8de7a7c428a gt gt gt gt isto é também onde I tem o filtro acima gt código gt groups. googlegroupcomp. soft-sys. matlabbrowsethreadthread1d8d10d5b835550dtvc2qexponentialmovingaveragefilter happydude Escreveu na mensagem lthdv3c35um1fred. mathworksgt. Gt Olá, estou tentando encontrar o EMA de 30 dias para uma série de tempo sem usar um loop for (eu tenho muitos dados). Como exemplo, isso é algo como o que eu quero (abaixo), mas estou descobrindo que meu resultado final não é muito próximo de como ele deveria procurar. Quando eu coloquem isso no Excel ou com um loop for, ele aparece corretamente, mas estou no escuro se eu estiver usando o filtro corretamente abaixo. Gt gt Alguém pode ajudar gt gt todaysFechar cumsum (randn (100,1)) gt daysBack 30 gt alpha 2 (daysBack 1) calcular o fator de suavização alpha gt gt preparar um coeficiente para a função de filtro gt coeficiente repmat (alpha, 1, daysBack) . (1: daysBack) gt coeficiente coeficiente (coeficiente) gt gt EMA filtro (coeficiente, 1, hoje fechado) gt gt gt PS este foi um dos postos I Observava-se groups. googlegroupcomp. soft-sys. matlabtreebrowsefrmthread7b5c0b3146432dd958e9d04b885a576arnum11donegroupcomp. soft-sys. matlabbrowsefrmthread7b5c0b3146432dd948bdf7f81cd8f1973Ftvc3D126doca1c5b8de7a7c428a gt gt isto é também onde I tem a gt código filtro groups. googlegroupcomp. soft-sys. matlabbrowsethreadthread1d8d10d5b835550dtvc2qexponentialmovingaveragefilter Observe acima que os coeficientes Pois os dados anteriores não estão certos. A fórmula é: Preço (t) alfaPreço (t-1) alfa (1-alfa) Preço (t-2) alfa (1-alfa) 2. Preço (t-daysBack) (1-alfa) diasRelatório de risco 1 repmat ((1-k), 1, N). (1: N).repmat (k, 1, N) 1 O que é uma lista de observação Você pode pensar Sua lista de observação como tópicos que você marcou. Você pode adicionar tags, autores, tópicos e até resultados de pesquisa à sua lista de exibição. Desta forma, você pode facilmente acompanhar os tópicos em que você está interessado. Para ver sua lista de observação, clique no link QuotMy Newsreaderquot. Para adicionar itens à sua lista de exibição, clique no link quotadd para assistir listquot na parte inferior de qualquer página. Como adiciono um item à minha lista de exibição Para adicionar critérios de pesquisa à sua lista de vigilância, procure o termo desejado na caixa de pesquisa. Clique no quot. Adicione esta pesquisa ao link da minha lista de vigilância na página de resultados da pesquisa. Você também pode adicionar uma tag à sua lista de observação procurando a tag com a quottag da diretiva: tagnamequot onde tagname é o nome da tag que você gostaria de assistir. Para adicionar um autor à sua lista de observação, vá para a página de perfil dos autores e clique no quot. Adicione este autor ao meu link de lista de exibição no topo da página. Você também pode adicionar um autor à sua lista de observação, indo para um tópico que o autor postou e clicando no quot. Adicione este autor ao meu link de lista de exibição. Você será notificado sempre que o autor fizer uma postagem. Para adicionar um tópico à sua lista de observação, vá para a página de discussão e clique no botão. Adicione este tópico ao meu link de lista de exibição no topo da página. Sobre newsgroups, Newsreaders e MATLAB Central O que são newsgroups Os newsgroups são um fórum mundial aberto a todos. Grupos de notícias são usados ​​para discutir uma grande variedade de tópicos, fazer anúncios e trocar arquivos. As discussões são enfiadas ou agrupadas de forma a que você possa ler uma mensagem postada e todas as suas respostas em ordem cronológica. Isso facilita o acompanhamento do tópico da conversa, e para ver o que já foi dito antes de publicar sua própria resposta ou fazer uma nova postagem. O conteúdo do grupo de notícias é distribuído por servidores hospedados por várias organizações na Internet. As mensagens são trocadas e gerenciadas usando protocolos de padrão aberto. Nenhuma única entidade ldquoownsrdquo os newsgroups. Existem milhares de grupos de notícias, cada um abordando um único tópico ou área de interesse. O MATLAB Central Newsreader publica e exibe mensagens no grupo de notícias comp. soft-sys. matlab. Como leio ou publico nos newsgroup Você pode usar o leitor de notícias integrado no site do MATLAB Central para ler e publicar mensagens neste newsgroup. MATLAB Central é hospedado por MathWorks. As mensagens postadas no MATLAB Central Newsreader são vistas por todos usando os grupos de notícias, independentemente de como eles acessam os newsgroup. Existem várias vantagens em usar o MATLAB Central. Uma Conta Sua conta do MATLAB Central está vinculada à sua Conta MathWorks para acesso fácil. Use o endereço de e-mail de sua escolha O MATLAB Central Newsreader permite que você defina um endereço de e-mail alternativo como seu endereço de postagem, evitando a desordem na sua caixa de correio principal e reduzindo o spam. Controle de spam A maioria dos spam de newsgroup é filtrada pelo MATLAB Central Newsreader. As mensagens de marcação podem ser marcadas com um rótulo relevante por qualquer usuário conectado. As tags podem ser usadas como palavras-chave para encontrar arquivos específicos de interesse, ou como uma maneira de categorizar suas postagens marcadas. Você pode optar por permitir que outras pessoas vejam suas tags, e você pode visualizar ou pesquisar outras marcas de tag, bem como as da comunidade em geral. A marcação fornece uma maneira de ver as grandes tendências e as idéias e aplicações menores e mais obscuras. Watch lists A configuração de listas de vigilância permite que você seja notificado das atualizações feitas nas postagens selecionadas pelo autor, thread ou qualquer variável de pesquisa. As notificações da lista de vigilância podem ser enviadas por e-mail (resumo diário ou imediato), exibidas em Meu leitor de notícias ou enviadas via feed RSS. Outras formas de acessar os grupos de notícias Use um leitor de notícias através de sua escola, empregador ou provedor de serviços de internet Pague pelo acesso de grupo de notícias de um fornecedor comercial Use Grupos do Google Mathforum. org fornece um leitor de notícias com acesso ao grupo de notícias comp. soft sys. matlab Execute o seu próprio servidor. Para instruções típicas, veja: slyckng. phppage2 Selecione seu país

No comments:

Post a Comment