Friday 10 November 2017

Moving average nan matlab no Brasil


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: tenho uma matriz de séries temporais para 8 variáveis ​​com cerca de 2500 pontos (10 anos de sexta-feira) e gostaria de calcular a média, a variância, o aspeto e a curtose em uma mudança Base média. Digamos quadros 100 252 504 756 - Gostaria de calcular as quatro funções acima em cada um dos quadros (time-), diariamente - de modo que o retorno para o dia 300 no caso com 100 dia-quadro seria significante Kurtosis de desvio de variância a partir do período dia 201-dia300 (100 dias no total). e assim por diante. Eu sei que isso significa que eu obteria uma saída de matriz, e o primeiro número de quadros seria NaNs, mas não consigo descobrir a indexação necessária para fazer isso. Perguntou 24 de março 14 às 0:07 Esta é uma questão interessante porque acho que a solução ideal é diferente da média do que é para as outras estatísticas da amostra. Eu forneci um exemplo de simulação abaixo que você pode trabalhar. Primeiro, escolha alguns parâmetros arbitrários e simule alguns dados. Para a média, use o filtro para obter uma média móvel: pensei inicialmente em resolver este problema usando conv da seguinte maneira: Mas como PhilGoddard apontou nos comentários, a abordagem do filtro evita a Necessidade do loop. Observe também que Ive escolheu para tornar as datas na matriz de saída correspondem às datas em X, então no trabalho posterior você pode usar os mesmos índices para ambos. Assim, as primeiras observações de WindowLength-1 em MeanMA serão nan. Para a variância, não consigo ver como usar qualquer filtro ou conv ou mesmo uma soma executória para tornar as coisas mais eficientes, então, em vez disso, eu executo o cálculo manualmente em cada iteração: Poderíamos acelerar as coisas levando ao explorar o fato de que já temos Calculou a média móvel média. Basta substituir a linha de loop dentro do acima com: No entanto, duvido que isso faça muita diferença. Se alguém pode ver uma maneira inteligente de usar o filtro ou o conv para obter a variante da janela em movimento, fique muito interessado em vê-lo. Eu deixo o caso de skewness e kurtosis para o OP, já que eles são essencialmente iguais ao exemplo de variância, mas com a função apropriada. Um ponto final: se você estivesse convertendo o acima em uma função geral, você poderia passar em uma função anônima como um dos argumentos, então você teria uma rotina média móvel que funcione para escolha arbitrária de transformações. Final, ponto final: para uma seqüência de comprimentos de janela, simplesmente desligue o bloco de código inteiro para cada comprimento de janela. Sim, a função de filtro é realmente melhor para o meio - mas eu queria fazer isso por várias funções diferentes, não só a média. Acabei de publicar minha resposta porque funcionou para mim e pensei que poderia ajudar alguém também. Ndash Dexter Morgan 15 de abril às 12:40

No comments:

Post a Comment