Estou tentando completar um projeto de atribuição matlab com a seguinte pergunta: Escreva uma função chamada motionaverage que leva um escalar chamado x como um argumento de entrada e retorna um escalar. A função usa um buffer para armazenar as entradas anteriores e o buffer pode conter no máximo 25 entradas. Especificamente, a função deve salvar as 25 entradas mais recentes em um vetor (o buffer). Cada vez que a função é chamada, ele copia o argumento de entrada em um elemento do buffer. Se já houver 25 entradas armazenadas no buffer, ele descarta o elemento mais antigo e salva o atual no buffer. Depois de armazenar a entrada no buffer, ele retorna a média de todos os elementos no buffer. A solução que eu forneço é a seguinte: de acordo com a graduação automática, minha função funciona corretamente quando os valores 1-50 estão passando consecutivamente, mas falham quando os valores de uma onda sinusoidal barulhenta estão passando consecutivamente (o que foi informado que pode ser devido a alguns Tipo de erro de redondeamento). Eu ficaria grato se algum de vocês pudesse me fornecer algumas dicas sobre as possíveis etapas de erro no meu código (anexado acima). Obrigado antecipadamente Eu tenho um vetor e eu quero calcular a média móvel dele (usando uma janela de largura 5). Por exemplo, se o vetor em questão for 1,2,3,4,5,6,7,8. Então a primeira entrada do vetor resultante deve ser a soma de todas as entradas em 1,2,3,4,5 (ou seja, 15) a segunda entrada do vetor resultante deve ser a soma de todas as entradas em 2,3,4, 5,6 (ou seja, 20) etc. No final, o vetor resultante deve ser 15,20,25,30. Como posso fazer isso. A função conv está bem no seu beco: Três respostas, três métodos diferentes. Aqui está um benchmark rápido (tamanhos de entrada diferentes, largura de janela fixa de 5) usando o tempo, sinta-se livre para puxar buracos nele (nos comentários) se você acha que precisa ser refinado. Conv surge como a abordagem mais rápida é cerca de duas vezes mais rápido que as moedas se aproximam (usando o filtro). E cerca de quatro vezes mais rápido que Luis Mendos se aproxima (usando cumsum). Aqui está outro benchmark (tamanho de entrada fixo de 1e4. Largura de janela diferente). Aqui, a aproximação de Luis Mendos cumsum surge como o vencedor claro, porque sua complexidade é principalmente governada pelo comprimento da entrada e é insensível à largura da janela. Conclusão Para resumir, você deve usar a abordagem conv se sua janela for relativamente pequena, use a abordagem cumsum se sua janela for relativamente grande. Código (para benchmarks) A saída de documentação tsmovavg (tsobj, s, lag) retorna a média móvel simples para o objeto da série temporária financeira, tsobj. Lag indica o número de pontos de dados anteriores usados com o ponto de dados atual ao calcular a média móvel. Output tsmovavg (vector, s, lag, dim) retorna a média móvel simples para um vetor. Lag indica o número de pontos de dados anteriores usados com o ponto de dados atual ao calcular a média móvel. Saída tsmovavg (tsobj, e, timeperiod) retorna a média móvel ponderada exponencial para o objeto da série temporária financeira, tsobj. A média móvel exponencial é uma média móvel ponderada, em que o período de tempo especifica o período de tempo. As médias móveis exponenciais reduzem o atraso aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pesa o preço mais recente em 18.18. Porcentagem Exponencial 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1). Output tsmovavg (vector, e, timeperiod, dim) retorna a média móvel ponderada exponencial para um vetor. A média móvel exponencial é uma média móvel ponderada, em que o período de tempo especifica o período de tempo. As médias móveis exponenciais reduzem o atraso aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pesa o preço mais recente em 18.18. (2 (período de tempo 1)). Saída tsmovavg (tsobj, t, numperiod) retorna a média móvel triangular para o objeto da série temporária financeira, tsobj. A média móvel triangular suaviza os dados. Tsmovavg calcula a primeira média móvel simples com a largura da janela do ceil (numperiod 1) 2. Em seguida, calcula uma segunda média móvel simples na primeira média móvel com o mesmo tamanho de janela. Saída tsmovavg (vetor, t, numperiod, dim) retorna a média móvel triangular para um vetor. A média móvel triangular suaviza os dados. Tsmovavg calcula a primeira média móvel simples com a largura da janela do ceil (numperiod 1) 2. Em seguida, calcula uma segunda média móvel simples na primeira média móvel com o mesmo tamanho de janela. Saída tsmovavg (tsobj, w, pesos) retorna a média móvel ponderada para o objeto da série temporária financeira, tsobj. Fornecendo pesos para cada elemento na janela em movimento. O comprimento do vetor de peso determina o tamanho da janela. Se fatores de peso maiores forem usados para preços mais recentes e fatores menores para preços anteriores, a tendência é mais sensível às mudanças recentes. Saída tsmovavg (vetor, w, pesos, dim) retorna a média móvel ponderada para o vetor, fornecendo pesos para cada elemento na janela em movimento. O comprimento do vetor de peso determina o tamanho da janela. Se fatores de peso maiores forem usados para preços mais recentes e fatores menores para preços anteriores, a tendência é mais sensível às mudanças recentes. Saída tsmovavg (tsobj, m, numperiod) retorna a média móvel modificada para o objeto da série temporária financeira, tsobj. A média móvel modificada é semelhante à média móvel simples. Considere o argumento numperiod para ser o atraso da média móvel simples. A primeira média móvel modificada é calculada como uma média móvel simples. Os valores subseqüentes são calculados adicionando o novo preço e subtraindo a última média da soma resultante. Saída tsmovavg (vetor, m, numperiod, dim) retorna a média móvel modificada para o vetor. A média móvel modificada é semelhante à média móvel simples. Considere o argumento numperiod para ser o atraso da média móvel simples. A primeira média móvel modificada é calculada como uma média móvel simples. Os valores subseqüentes são calculados adicionando o novo preço e subtraindo a última média da soma resultante. Dim 8212 dimensionar para operar ao longo de inteiro positivo com o valor 1 ou 2 Dimensão para operar junto, especificado como um inteiro positivo com um valor de 1 ou 2. dim é um argumento de entrada opcional e, se não for incluído como entrada, o padrão O valor 2 é assumido. O padrão de dim 2 indica uma matriz orientada por linha, onde cada linha é uma variável e cada coluna é uma observação. Se dim 1. a entrada é assumida como um vetor de coluna ou matriz orientada por coluna, onde cada coluna é uma variável e cada linha uma observação. E 8212 Indicador para vetor de caracteres de média móvel exponencial A média móvel exponencial é uma média móvel ponderada, em que o período de tempo é o período de tempo da média móvel exponencial. As médias móveis exponenciais reduzem o atraso aplicando mais peso aos preços recentes. Por exemplo, uma média móvel exponencial de 10 períodos pesa o preço mais recente em 18.18. Porcentagem exponencial 2 (TIMEPER 1) ou 2 (WINDOWSIZE 1) período de tempo 8212 Comprimento do período de tempo inteiro não negativo Selecione seu país
Comments
Post a Comment