Sunday 19 November 2017

Moving Average Matlab Smooth


Uma maneira simples (ad hoc) é apenas tomar uma média ponderada (ajustável por alfa) em cada ponto com seus vizinhos: ou alguma variação do mesmo. Sim, para ser mais sofisticado você pode Fourier transformar seus dados em primeiro lugar, em seguida, cortar as altas freqüências. Algo como: Isso corta as 20 frequências mais altas. Tenha cuidado para cortá-los simetricamente, caso contrário a transformada inversa não é mais real. Você precisa escolher cuidadosamente a freqüência de corte para o nível correto de suavização. Este é um tipo muito simples de filtragem (filtragem de caixa no domínio da freqüência), para que você possa tentar suavemente atenuando freqüências de alta ordem se a distorção é inaceitável. FFT não é uma má idéia, mas é provavelmente um exagero aqui. Corrente ou médias móveis dão resultados geralmente pobres e devem ser evitados para qualquer coisa além de trabalhos de casa atrasados ​​(e ruído branco). Id uso Savitzky-Golay filtragem (em Matlab sgolayfilt (.)). Isso vai lhe dar os melhores resultados para o que você está procurando - alguma suavização local, mantendo a forma da curva. Que é alisamento e como posso fazer isso Eu tenho uma matriz em Matlab que é o espectro de magnitude de um sinal de fala ( A magnitude de 128 pontos de FFT). Como posso suavizar isso usando uma média móvel De que eu entendo, eu deveria ter um tamanho de janela de um certo número de elementos, tomar média, e isso se torna o novo elemento 1. Em seguida, deslocar a janela para a direita por um elemento, tomar média que se torna o elemento 2, e assim por diante. É realmente assim que funciona Eu não tenho certeza de mim mesmo, porque se eu fizer isso, no meu resultado final vou ter menos de 128 elementos. Então, como ele funciona e como ele ajuda a suavizar os pontos de dados Ou há alguma outra maneira que eu posso fazer suavização de dados pediu Oct 15 12 às 6:30 migrado de stackoverflow Oct 15 12 at 14:51 Esta questão veio de nossa Para programadores profissionais e entusiastas. Para um espectro que você provavelmente deseja média juntos (na dimensão do tempo) múltiplos espectros ao invés de uma média de corrida ao longo do eixo de freqüência de um único espectro ndash endolito Oct 16 12 em 1:04 endolito ambas são técnicas válidas. A média no domínio da frequência (às vezes chamada de Periodograma de Danielle) é 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 requerida pelo verdadeiro Periodograma (isto é chamado de Periodograma Welch). Além disso, como uma questão de semântica, eu diria que quotsmoothingquot é non-causual low-pass filtragem. Veja Kalman filtragem vs Kalman suavização, Wiener filtragem v Wiener suavização, etc Há uma distinção não trivial e depende da implementação. Ndash Bryan 12 de dezembro às 19:18 O alisamento pode ser feito de muitas maneiras, mas em termos muito básicos e gerais significa que você mesmo um sinal, misturando seus elementos com os seus vizinhos. Você smearblur o sinal um pouco, a fim de se livrar do ruído. Por exemplo, uma técnica de alisamento muito simples seria recalcular cada elemento de sinal f (t) como 0,8 do valor original, mais 0,1 de cada um de seus vizinhos: Observe como os fatores de multiplicação, ou pesos, somam um. Portanto, se o sinal é bastante constante, suavização não muda muito. Mas se o sinal continha uma súbita mudança brusca, então a contribuição de seus vizinhos ajudará a esclarecer esse ruído um pouco. 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. Exemplo agradável de um tipo particular de suavização: Acima: sinal desmarcado Abaixo: sinal suavizado Exemplos de alguns kernels: Além da resposta agradável de Junuxx eu gostaria de soltar algumas notas. Suavização está relacionada à filtragem (infelizmente bastante vaga artigo da Wikipedia) - você deve escolher o mais suave com base em suas propriedades. Um dos meus favoritos é o filtro mediano. 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 um olhar. Sua suavização é na verdade uma estimativa Bayesiana de máxima verossimilhança do sinal com base em observações. Respondeu Oct 15 12 at 11:07 1 para mencionar o kalman filtro ndash Diego 13/12 às 18:48 suavização implica usar informações de amostras vizinhas, a fim de alterar a relação entre amostras vizinhas. Para vetores finitos, nas extremidades, não existe informação vizinha de um lado. Suas escolhas são: não suavizar as extremidades, aceitar um vetor mais suavizado resultante, compilar dados e alisar com isso (depende da precisão de quaisquer previsões fora das extremidades), ou talvez usando diferentes núcleos de suavização assimétricos nas extremidades (o que acaba Encurtando o conteúdo da informação no sinal de qualquer maneira). Respondido Out 15 12 at 19:44 Outros têm mencionado como você suavização, Id gostaria de mencionar por que suavização funciona. Se você oversample adequadamente o seu sinal, ele irá variar relativamente pouco de uma amostra para a próxima (timepoints amostra, pixels, etc), e espera-se ter uma aparência suave geral. Por outras palavras, o seu sinal contém poucas frequências elevadas, isto é, componentes de sinal que variam a uma taxa semelhante à sua taxa de amostragem. No entanto, as medições são muitas vezes corrompido pelo ruído. Em uma primeira aproximação, nós consideramos geralmente o ruído para seguir uma distribuição Gaussian com a média zero e um determinado desvio padrão que seja adicionado simplesmente sobre o sinal. Para reduzir o ruído em nosso sinal, comumente fazemos as seguintes quatro suposições: o ruído é aleatório, não está correlacionado entre as amostras, tem uma média de zero eo sinal está suficientemente sobreamosturado. Com estas suposições, podemos usar um filtro médio deslizante. Considere, por exemplo, três amostras consecutivas. Uma vez que o sinal é altamente sobreamosturado, o sinal subjacente pode ser considerado como mudando linearmente, o que significa que a média do sinal entre as três amostras seria igual ao sinal verdadeiro na amostra média. Em contraste, o ruído tem zero médio e não está correlacionado, o que significa que sua média tende a zero. Assim, podemos aplicar um filtro de média deslizante de três amostras, onde substituímos cada amostra pela média entre si e seus dois vizinhos adjacentes. Naturalmente, quanto maior for a janela, mais o ruído progredirá para zero, mas menos nossa suposição de linearidade do sinal verdadeiro se mantém. Assim, temos que fazer um trade-off. Uma maneira de obter o melhor de ambos os mundos é usar uma média ponderada, onde damos amostras mais distantes pesos menores, de modo que nós efeitos de ruído médio de intervalos maiores, enquanto não ponderar verdadeiro sinal muito onde se desvia da nossa linearidade suposição. Como você deve colocar os pesos depende do ruído, o sinal e eficiência computacional e, claro, o trade-off entre livrar-se do ruído e corte no sinal. Observe que houve muito trabalho nos últimos anos para nos permitir relaxar algumas das quatro suposições, por exemplo, projetando esquemas de suavização com janelas de filtro variável (difusão anisotrópica) ou esquemas que realmente não usam janelas em todos (Meios não-locais). Respondeu Dec 27 12 at 15: 10A informação, código e dados nesta página é para apoiar um artigo quot The Black Art of Smoothing quot publicado em Electrical amp Automation Technology. Por David I. Wilson. O código apresentado nesta página inclui algoritmos para: Filtros de Savitzky-Golay Filtros de Savitzky-Golay Filtragem de Loess (regressão ponderada local) Filtros Hodrick-Prescott nos ambientes de desenvolvimento Matlab e Scicos. Em ambos os casos, não são necessárias caixas de ferramentas especiais. Matlab é um produto comercial, mas Scilab é um freeware equivalente. Nota: O código aqui é apresentado quotas isquot com nenhuma garantia expressa ou implícita. Se você estiver interessado em experimentar essas operações de suavização em seus próprios dados, faça o seguinte: Se você tiver Matlab (um produto comercial), baixe e descompacte os arquivos de suavização do Matlab. Execute o arquivo de script smootherdemo. m. Você deve ver parcelas algo como isto que é semelhante às figuras no artigo publicado. Se você quiser usar seus próprios dados, coloque os pares (tempo, dados) em uma planilha do Excel e edite o arquivo smootherdemo para ler sua própria planilha do Excel. Você precisará editar o arquivo de script e, possivelmente, ajustar os vários parâmetros de suavização. Alternativamente, se você preferir usar o freeware Scilab, então: Baixe e instale o Scilab (aproximadamente 13Mb). Você tem a opção de Windows, Linux ou Mac. Baixe os arquivos mais suaves do Scilab e descompacte em algum diretório conveniente Execute o arquivo smootherdemo. sci. Matlab é um software comercial de software e prototipagem científica popular com muitos engenheiros. O Matlab é vendido na Nova Zelândia pela Hoare Research Software. Baixe e descompacte os arquivos de suavização Matlab em seu diretório de trabalho e execute o arquivo de script Matlab smootherdemo. m. O Scilab é um Pacote de Software Científico gratuito semelhante, mas não exatamente compatível com, Matlab. O Scilab está disponível para Linux, Windows e Mac e está disponível para download a partir daqui. (Aproximadamente 13Mb). Atualmente está sendo desenvolvido por pesquisadores do INRIA e da ENPC na França, e como Matlab, inclui inúmeras caixas de ferramentas e um simulador de diagrama de blocos gráfico semelhante ao Simulink chamado Scicos. Os seguintes arquivos de dados foram usados ​​no artigo. Eles são dados em formato Excel e texto ascii reta com um cabeçalho de uma linha. Usando Convolution para alisar dados com uma média móvel em MATLAB (Originalmente postado em Dougs MATLAB Video Tutorials blog.) Eu ensino a introdução MATLAB classes para todos os novos contratados em O grupo de Suporte Técnico da MathWorks. Um dos participantes queria saber como fazer uma média móvel no MATLAB. Isso pode ser útil para filtrar ou suavizar dados ruidosos. Eu percebi que eu nunca tinha coberto isso no blog, então aqui vamos nós mostrar como fazer isso a partir do zero usando conv. Se você tem a caixa de ferramentas de ajuste de curva, você pode querer verificar para fora liso. Que adiciona alguns métodos mais suaves de alisamento. Foco no produto Selecione seu país

No comments:

Post a Comment