Sunday 29 April 2018

Moving average in matlab code


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 que estou tentando calcular a média móvel de 3 dias de baixo para cima da matriz. Eu forneci o meu código: Dada a seguinte matriz e máscara: Eu tentei implementar o comando conv, mas estou recebendo um erro. Aqui está o comando conv que venho tentando usar na segunda coluna da matriz a: A saída que desejo é dada na seguinte matriz: Se você tiver alguma sugestão, eu agradeceria muito. Obrigado Para a coluna 2 da matriz a, estou calculando a média móvel de 3 dias da seguinte maneira e colocando o resultado na coluna 4 da matriz a (renomeiei a matriz a como 39desiredOutput39 apenas para ilustração). A média de 3 dias de 17, 14, 11 é 14 a média de 3 dias de 14, 11, 8 é 11 a média de 3 dias de 11, 8, 5 é 8 e a média de 3 dias de 8, 5, 2 é 5. Não há valor nas duas linhas inferiores da quarta coluna porque o cálculo da média móvel de três 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 Jun 12 13 at 1:28 Em geral, ajudaria se você mostrasse o erro. Nesse 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). Segundo, observe o tamanho de c. Você não pode simplesmente encaixar c em um. A maneira típica de obter uma média móvel seria usar o mesmo: mas isso não parece com o que você quer. Em vez disso, você é forçado a usar algumas linhas: Preciso computar uma média móvel em uma série de dados, dentro de um loop for. Eu tenho que pegar a média móvel durante N9 dias. A matriz Im computing in é 4 séries de 365 valores (M), que em si são valores médios de outro conjunto de dados. Eu quero plotar os valores médios dos meus dados com a média móvel em um gráfico. Eu pesquisei 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 computo minha média e ploto com uma média móvel (errada). Eu escolhi o valor wts direto do site mathworks, de modo que está incorreto. (fonte: mathworks. nl/help/econ/moving-average-trend-estimation. html) Meu problema é que eu não entendo o que é isso. Alguém poderia explicar se tem algo a ver com os pesos dos valores: que é inválido neste caso. Todos os valores são ponderados da mesma maneira. E se eu estou fazendo isso completamente errado, eu poderia obter alguma ajuda com isso? Meus sinceros agradecimentos. perguntou conv 23 de setembro à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 um. Se você quiser ponderar cada valor uniformemente e fazer um filtro em movimento de tamanho N, então você deve fazer. Usar o argumento válido em conv resultará em ter menos valores em Ms do que em M. Use o mesmo se você não se importar com os efeitos de preenchimento zero. Se você tiver a caixa de ferramentas de processamento de sinal, você pode usar o cconv se você quiser tentar uma média móvel circular. Algo como Você deve ler a documentação conv e cconv para mais informações, se você ainda não tiver. Você pode usar o filtro para encontrar uma média de 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) suave como parte da caixa de ferramentas Ajuste de Curva (que está disponível na maioria dos casos) yy suavizar (y) suaviza os dados no vetor de coluna y 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.Moving Filter (Filtro MA) Loading. O filtro de média móvel é um simples filtro FIR de baixa passagem (resposta de impulso finito) comumente usado para suavizar uma matriz de dados / sinal amostrados. Ele toma M amostras de entrada de cada vez e pega a média dessas amostras M e produz um único ponto de saída. É uma estrutura LPF (Low Pass Filter) muito simples que é útil para cientistas e engenheiros filtrarem componentes ruidosos indesejados dos dados pretendidos. À medida que o comprimento do filtro aumenta (o parâmetro M), a suavidade da saída aumenta, enquanto as transições nítidas nos dados são tornadas cada vez mais abruptas. Isto implica que este filtro tem uma excelente resposta no domínio do tempo, mas uma fraca resposta de frequência. O filtro MA executa três funções importantes: 1) Toma M pontos de entrada, calcula a média desses pontos M e produz um único ponto de saída. 2) Devido à computação / cálculos envolvidos. o filtro introduz uma quantidade definida de atraso. 3) O filtro atua como um filtro de baixa passagem (com resposta de domínio de baixa frequência e uma boa resposta de domínio de tempo). Código Matlab: Após o código matlab, simula a resposta no domínio do tempo de um filtro de Média Móvel de ponto M e também plota a resposta de freqüência para vários comprimentos de filtro. Resposta no Domínio do Tempo: No primeiro gráfico, temos a entrada que está entrando no filtro da média móvel. A entrada é ruidosa e nosso objetivo é reduzir o ruído. A figura a seguir é a resposta de saída de um filtro de média móvel de 3 pontos. Pode ser deduzido da figura que o filtro de Média Móvel de 3 pontos não fez muito em filtrar o ruído. Aumentamos os toques de filtro para 51 pontos e podemos ver que o ruído na saída reduziu muito, o que é mostrado na próxima figura. Aumentamos as derivações para 101 e 501 e podemos observar que mesmo que o ruído seja quase zero, as transições são drasticamente atenuadas (observe a inclinação em cada lado do sinal e compare-as com a transição ideal da parede de tijolos em nossa entrada). Resposta de Freqüência: A partir da resposta de freqüência, pode-se afirmar que o roll-off é muito lento e a atenuação da faixa de parada não é boa. Dada essa atenuação de banda de parada, claramente, o filtro de média móvel não pode separar uma banda de freqüências de outra. Como sabemos, um bom desempenho no domínio do tempo resulta em baixo desempenho no domínio da frequência e vice-versa. Em resumo, a média móvel é um filtro de suavização excepcionalmente bom (a ação no domínio do tempo), mas um filtro passa-baixas excepcionalmente ruim (a ação no domínio da frequência) Links Externos: Livros Recomendados: Barra Lateral Principal

No comments:

Post a Comment