среда, 27 июня 2018 г.

Moving average example in matlab


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 manter 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 fui informado que pode ser devido a alguns Tipo de erro de redondeamento). Agradeceria se algum de vocês pudesse fornecer algumas dicas sobre as possíveis etapas de erro no meu código (anexado acima). Agradeço antecipadamente. 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 procurei 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-estimation. html) Meu problema, porém, é que eu não entendo o que é esse wts. 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 filtro móvel N de tamanho, 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. 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 da 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.Moving-Average Filter of Traffic Data Este exemplo mostra como suavizar os dados do fluxo de tráfego usando um filtro de média móvel com uma janela deslizante de 4 horas. A seguinte equação de diferença descreve um filtro que mede a hora atual e as três horas anteriores de dados. Importe os dados de tráfego e atribua a primeira coluna de contagem de veículos ao vetor x. Crie os vetores do coeficiente de filtro. Calcule a média móvel de 4 horas dos dados e trace os dados originais e os dados filtrados. MATLAB e Simulink são marcas registradas da The MathWorks, Inc. Por favor, veja mathworkstrademarks para obter uma lista de outras marcas comerciais pertencentes à The MathWorks, Inc. Outros produtos ou nomes de marcas são marcas comerciais ou marcas registradas de seus respectivos proprietários. Escolha o seu país

Комментариев нет:

Отправить комментарий