Friday 17 November 2017

Moving Average System In 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 o 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, eu estou informando a média móvel de 3 dias da seguinte forma e colocando o resultado na coluna 4 da matriz a (I renomeou 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 de computação é uma série de 365 valores (M), que em si são 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 o mesmo. E se eu estou fazendo isso inteiramente errado, eu poderia obter alguma ajuda com isso, 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 experimentar 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. Você pode usar o filtro para encontrar uma média em execução sem usar um loop for. Este exemplo encontra a média de execução de um vetor de 16 elementos, usando um tamanho de janela de 5. 2) liso como parte da Curva Fitting Toolbox (que está disponível na maioria dos casos) yy liso (y) suaviza os dados no vetor de coluna Usando um filtro de média móvel. Os resultados são retornados no vetor da coluna yy. O intervalo padrão para a média móvel é 5.Documentação dsp. MovingAverage Objeto do sistema Descrição O objeto dsp. MovingAverage Systemx2122 calcula a média móvel do sinal de entrada ao longo de cada canal, independentemente ao longo do tempo. O objeto usa o método da janela deslizante ou o método de ponderação exponencial para calcular a média móvel. No método da janela deslizante, uma janela de comprimento especificado é movida sobre os dados, amostra por amostra e a média é calculada sobre os dados na janela. No método de ponderação exponencial, o objeto multiplica as amostras de dados com um conjunto de fatores de ponderação. A média é calculada somando os dados ponderados. Para obter mais detalhes sobre esses métodos, consulte Algoritmos. O objeto aceita entradas multicanal, ou seja, entradas de tamanho m-by-n, onde m 8805 1 e n gt 1. O objeto também aceita entradas de tamanho variável. Uma vez que o objeto está bloqueado, você pode alterar o tamanho de cada canal de entrada. No entanto, o número de canais não pode mudar. Este objeto oferece suporte à geração de código C e C. Para calcular a média móvel da entrada: Crie um objeto dsp. MovingAverage e defina as propriedades do objeto. Etapa de chamada para calcular a média móvel. Nota: Alternativamente, em vez de usar o método passo para executar a operação definida pelo objeto System, você pode chamar o objeto com argumentos, como se fosse uma função. Por exemplo, y step (obj, x) e y obj (x) executam operações equivalentes. Construção movAvg dsp. MovingAverage retorna um objeto médio móvel, movAvg. Usando as propriedades padrão. MovAvg dsp. MovingAverage (Len) define a propriedade WindowLength para Len. MovAvg dsp. MovingAverage (Nome, Valor) especifica propriedades adicionais usando pares Nome, Valor. Propriedades não especificadas têm valores padrão. Escolha o seu país

No comments:

Post a Comment