Tuesday 7 November 2017

Moving average smoothing matlab


O que é o alisamento e como posso fazê-lo? 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 requerida do verdadeiro Periodograma (o chamado 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 através das 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: 10A informação, o código e os dados desta página são para apoiar um artigo intitulado The Black Art of Smoothing quot publicado na Tecnologia de Automação de Amplificadores Elétricos. Por David I. Wilson. O código apresentado nesta página inclui algoritmos para: Amplificador de filtragem médio em movimento Filtros Savitzky-Golay Filtragem de Loess (regressão ponderada local) Limpas de kernel Whittaker Filtros Hodrick-Prescott nos ambientes de desenvolvimento Matlab e Scicos. Em ambos os casos, nenhuma caixa de ferramentas especial é necessária. Matlab é um produto comercial, mas o Scilab é um equivalente de freeware. Nota: O código aqui é apresentado quotas isquot sem 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ê possui o Matlab (um produto comercial), baixe e descomprique os arquivos de suavização do Matlab. Execute o arquivo de script smootherdemo. m. Você deve ver parcelas semelhantes a isso, que são semelhantes aos números 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 folha de cálculo 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. Faça o download dos arquivos Scilab mais lisos e desembalar em algum diretório conveniente. Execute o arquivo smootherdemo. sci. Matlab é um software científico comercial e ambiente de prototipagem popular entre muitos engenheiros. A Matlab é vendida na Nova Zelândia pelo Hoare Research Software. Baixe e descompacte os arquivos de suavização do Matlab em seu diretório de trabalho e execute o arquivo de script do smootherdemo. m Matlab. O Scilab é um pacote de software científico gratuito semelhante ao, mas não exatamente compatível com o Matlab. O Scilab está disponível para Linux, Windows e o Mac e está disponível para download a partir daqui. (Aproximadamente 13Mb). Atualmente está sendo desenvolvido por pesquisadores do INRIA e ENPC na França e, como a Matlab, inclui inúmeras caixas de ferramentas e um simulador de diagramas de blocos gráficos semelhante ao Simulink chamado Scicos. Os seguintes arquivos de dados foram usados ​​no artigo. Eles são fornecidos em formato Excel e texto ascii direto com um cabeçalho de uma linha. Remova o ruído e os componentes periódicos dos conjuntos de dados, preservando os padrões subjacentes. Os algoritmos de suavização são freqüentemente usados ​​para remover componentes periódicos de um conjunto de dados, preservando as tendências a longo prazo. Por exemplo, os dados das séries temporais que são amostrados uma vez por mês muitas vezes exibem flutuações sazonais. Um filtro de média móvel de doze meses removerá o componente sazonal, preservando a tendência a longo prazo. Alternativamente, os algoritmos de suavização podem ser usados ​​para gerar um modelo descritivo para análise de dados exploratórios. Esta técnica é freqüentemente usada quando não é prático especificar um modelo de parâmetro que descreva a relação entre um conjunto de variáveis. As técnicas de suavização de sinais ou séries temporais são usadas em uma variedade de disciplinas, incluindo processamento de sinal, identificação do sistema, estatísticas e econometria. Os algoritmos de suavização comuns incluem: LOWESS e LOESS: Métodos de suavização não paramétricos usando modelos de regressão locais Suavização do kernel: abordagem não paramétrica para modelar uma função de distribuição suave Funções de suavização: abordagem não paramétrica para ajuste de curva Filtro ARMA (Autoregressive moving average): Filtro usado quando os dados exibem autocorrelação serial Filtro Hodrick-Prescott: Filtro usado para suavizar as séries temporais econométricas extraindo os componentes sazonais. Filtro de suavização SavitzkyGolay: Filtro usado quando um sinal possui informações de alta freqüência que devem ser retidos. Filtro Butterworth: Filtro usado no processamento de sinal para remover ruído de alta freqüência Selecione Seu País

No comments:

Post a Comment