Monday 30 September 2019

Processamento de sinal em média móvel matlab


Eu 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. O que está suavizando e como posso fazê-lo. Eu tenho uma matriz em Matlab, que é o espectro de magnitude de um sinal de fala (a magnitude de 128 pontos da FFT). Como liso isso usando uma média móvel Do que eu entendo, eu deveria ter um tamanho de janela de um certo número de elementos, ter uma média, e isso se torna o novo elemento 1. Em seguida, deslize a janela para a direita por um elemento, leve a média, que se torna o 2º elemento, e assim por diante. É realmente assim que funciona, não tenho certeza de mim mesmo, se eu fizer isso, no meu resultado final terei menos de 128 elementos. Então, como isso funciona e como ele ajuda a suavizar os pontos de dados? Ou há alguma outra maneira que eu possa fazer o alisamento de dados solicitado? 15 de outubro às 6:30 migrou do stackoverflow 15 de outubro 12 às 14:51 Esta questão veio de nossa Site para programadores profissionais e entusiasta. Para um espectro, você provavelmente quer medir em conjunto (na dimensão do tempo) múltiplos espectros em vez de uma média de corrida ao longo do eixo de freqüência de um único espectro ndash endolith 16 de outubro 12 às 1:04 endolito, ambas são técnicas válidas. A média no domínio da frequência (às vezes chamado de Danielle Periodogram) é a mesma que a janela no domínio do tempo. A média de periodogramas múltiplos (quotspectraquot) é uma tentativa de imitar a média de conjunto necessária do verdadeiro Periodograma (isto é chamado de Periodograma Welch). Além disso, como uma questão de semântica, eu argumentaria que quotsmoothingquot é uma filtragem passiva não-causal. Veja a filtragem de Kalman contra o alisamento de Kalman, a filtragem de Wiener e o alisamento de Wiener, etc. Existe uma distinção não trivial e dependente da implementação. Ndash Bryan 12 de dezembro 12 às 19:18 O alisamento pode ser feito de várias maneiras, mas, em termos muito básicos e gerais, significa que você mesmo emitirá um sinal, misturando seus elementos com seus vizinhos. Você manuseia o sinal um pouco para se livrar do ruído. Por exemplo, uma técnica de suavização muito simples seria, recalcular cada elemento de sinal f (t) para 0,8 do valor original, mais 0,1 de cada um dos seus vizinhos: Observe como os fatores de multiplicação, ou pesos, somam um máximo. Então, se o sinal for bastante constante, o alisamento não o altera muito. Mas se o sinal continha uma mudança brusca e brusca, então a contribuição de seus vizinhos ajudará a esclarecer um pouco esse ruído. Os pesos que você usa nesta função de recálculo podem ser chamados de kernel. Uma função Gaussiana unidimensional ou qualquer outro kernel básico deve fazer no seu caso. Bom exemplo de um tipo particular de suavização: acima: sinal não aspirado Abaixo: sinal suavizado Exemplos de alguns kernels: Além da boa resposta do Junuxx, gostaria de soltar algumas notas. O alisamento está relacionado à filtragem (infelizmente, um artigo bastante vago da Wikipedia) - você deve escolher o mais suave com base em suas propriedades. Um dos meus favoritos é o filtro médio. Este é um exemplo de um filtro não-linear. Tem algumas propriedades interessantes, preserva bordas e é bastante robusto sob grande ruído. Se você tem um modelo, como seu sinal comporta um filtro de Kalman vale a pena olhar. Seu alisamento é, na verdade, uma estimativa bayesiana de máxima verossimilhança do sinal com base em observações. Respondeu 15 de outubro 12 às 11:07 1 por mencionar o filtro kalman ndash Diego 13 de dezembro 12 às 18:48 O suavização implica usar informações de amostras vizinhas para mudar a relação entre amostras vizinhas. Para vetores finitos, nas extremidades, não há informações vizinhas de um lado. Suas escolhas são: não limpe facilmente as extremidades, aceite um vetor suavizado resultante mais curto, compense dados e suavize com isso (depende da facilidade de precisão de quaisquer previsões fora das extremidades), ou talvez use diferentes kernels de suavização assimétricos nas extremidades (o que acaba Reduzindo o conteúdo da informação no sinal de qualquer maneira). Respondeu 15 de outubro 12 às 19:44 Outros já mencionaram como você suaviza, eu gostaria de mencionar por que o suavização funciona. Se você oversample adequadamente o seu sinal, ele irá variar relativamente pouco de uma amostra para a próxima (exemplos de pontos de tempo, pixels, etc.), e espera-se que tenha uma aparência geral suave. Em outras palavras, seu sinal contém poucas freqüências altas, ou seja, componentes de sinal que variam a uma taxa semelhante à sua taxa de amostragem. No entanto, as medidas são muitas vezes corrompidas pelo ruído. Em uma primeira aproximação, geralmente consideramos o ruído seguir uma distribuição gaussiana com zero médio e um certo desvio padrão que é simplesmente adicionado em cima do sinal. Para reduzir o ruído em nosso sinal, geralmente fazemos as quatro premissas seguintes: o ruído é aleatório, não está correlacionado entre as amostras, tem uma média de zero e o sinal está suficientemente superamplegado. Com estes pressupostos, podemos usar um filtro de média deslizante. Considere, por exemplo, três amostras consecutivas. Uma vez que o sinal está muito superamplegado, o sinal subjacente pode ser considerado como variável de forma linear, o que significa que a média do sinal nas três amostras seria igual ao sinal verdadeiro na amostra do meio. Em contraste, o ruído tem zero médio e não está correlacionado, o que significa que sua média deve tender para zero. Assim, podemos aplicar um filtro de média deslizante de três amostras, onde substituimos cada amostra pela média entre si e seus dois vizinhos adjacentes. Claro, quanto maior, fazemos a janela, mais o ruído irá atingir a zero, mas menor será a nossa suposição de linearidade do sinal verdadeiro. Assim, temos que fazer um trade-off. Uma maneira de tentar obter o melhor de ambos os mundos é usar uma média ponderada, onde damos amostras de pesos menores menores, de modo que nós produzimos efeitos de ruído médios em intervalos maiores, embora não pesemos sinal verdadeiro demais, onde ele se desvia da linearidade suposição. Como você deve colocar os pesos depende do ruído, do sinal e da eficiência computacional, e, claro, do trade-off entre livrar-se do ruído e cortar o sinal. Note-se que tem havido muito trabalho nos últimos anos para nos permitir relaxar alguns dos quatro pressupostos, por exemplo, criando esquemas de suavização com janelas de filtro variáveis ​​(difusão anisotrópica) ou esquemas que realmente não usam o Windows (Meios não locais). Respondido em 27 de dezembro às 15: 10Documentação Este exemplo mostra como usar os filtros de média móvel e o reescrever para isolar o efeito de componentes periódicos da hora do dia nas leituras de temperatura por hora, bem como remover o ruído indesejado da linha de uma medida de tensão de circuito aberto . O exemplo também mostra como alisar os níveis de um sinal de relógio, preservando as bordas usando um filtro mediano. O exemplo também mostra como usar um filtro Hampel para remover grandes outliers. Motivation Smoothing é como descobrimos padrões importantes em nossos dados, deixando de lado as coisas que não têm importância (ou seja, o ruído). Usamos a filtragem para executar esse alisamento. O objetivo do suavização é produzir mudanças lentas de valor, de modo que seja mais fácil ver tendências em nossos dados. Às vezes, quando você examina dados de entrada, você deseja suavizar os dados para ver uma tendência no sinal. No nosso exemplo, temos um conjunto de leituras de temperatura em Celsius tomadas a cada hora no Aeroporto de Logan durante todo o mês de janeiro de 2017. Note que podemos visualizar visualmente o efeito que a hora do dia tem nas leituras de temperatura. Se você está interessado apenas na variação diária da temperatura ao longo do mês, as flutuações horárias só contribuem com o ruído, o que dificulta a discernição das variações diárias. Para remover o efeito da hora do dia, gostaríamos agora de suavizar nossos dados usando um filtro de média móvel. Um filtro de média móvel Na sua forma mais simples, um filtro médio móvel de comprimento N leva a média de cada N amostras consecutivas da forma de onda. Para aplicar um filtro de média móvel a cada ponto de dados, nós construímos nossos coeficientes de nosso filtro de modo que cada ponto seja igualmente ponderado e contribua 124 para a média total. Isso nos dá a temperatura média em cada período de 24 horas. Retardamento do filtro Observe que a saída filtrada está atrasada em cerca de doze horas. Isto é devido ao fato de nosso filtro de média móvel ter um atraso. Qualquer filtro simétrico de comprimento N terá um atraso de (N-1) 2 amostras. Podemos explicar esse atraso manualmente. Extraindo diferenças médias Alternativamente, também podemos usar o filtro de média móvel para obter uma melhor estimativa de como a hora do dia afeta a temperatura geral. Para fazer isso, primeiro, subtrair os dados suavizados das medidas horárias de temperatura. Em seguida, segmente os dados diferenciados em dias e leve a média em todos os 31 dias do mês. Extraindo o envelope de pico Às vezes, também gostaríamos de ter uma estimativa variável suave de como os altos e baixos do nosso sinal de temperatura mudam diariamente. Para fazer isso, podemos usar a função de envelope para conectar altas e baixas extremas detectadas em um subconjunto do período de 24 horas. Neste exemplo, garantimos que haja pelo menos 16 horas entre cada extremo alto e extremo baixo. Nós também podemos ter uma noção de como os altos e baixos estão tendendo tomando a média entre os dois extremos. Filtros médios em movimento ponderados Outros tipos de filtros médios móveis não pesam cada amostra de forma igual. Outro filtro comum segue a expansão binomial de (12,12) n Este tipo de filtro se aproxima de uma curva normal para valores grandes de n. É útil para filtrar o ruído de alta freqüência para pequenos n. Para encontrar os coeficientes para o filtro binomial, convolve 12 12 com ele próprio e, então, convoluciona a saída com 12 12 um número de vezes prescrito. Neste exemplo, use cinco iterações totais. Outro filtro um pouco semelhante ao filtro de expansão gaussiano é o filtro exponencial de média móvel. Este tipo de filtro de média móvel ponderada é fácil de construir e não requer um grande tamanho de janela. Você ajusta um filtro de média móvel ponderada exponencialmente por um parâmetro alfa entre zero e um. Um maior valor de alfa terá menor alisamento. Amplie as leituras por um dia. Escolha o seu país

No comments:

Post a Comment