Contexto:
(Isenção de responsabilidade: este não é um problema de comunicação).
Estou tentando estimar a frequência fundamental de um sinal real e periódico. Esse sinal foi construído por meio da filtragem por correspondência de um sinal bruto, ao de um pulso. (o filtro correspondente). O sinal resultante possui as seguintes características:
É periódico. (Fundamental é 1 / período), e é isso que estou tentando estimar.
Não é estacionário no tempo. Especificamente, as amplitudes dos pulsos periódicos podem variar em amplitude. (por exemplo, um pulso pode ser baixo, enquanto outro é alto, e o próximo baixo novamente e um após esse meio, etc.).
Eu acredito que é estacionário em frequência (na medida em que você aceita mudanças de amplitudes, mas não mudanças de banda).
Possui distorção harmônica. O que quero dizer aqui é que, (e me corrija se eu estiver errado), mas que os pulsos individuais dentro do sinal não são sinusóides, mas são formas "descoladas", como uma gaussiana, triangular, meia-parábola, etc. .
Eu estou tentando estimar a frequência fundamental deste sinal.
É claro que, às vezes, o sinal bruto não passa de ruído, mas ainda segue o caminho e é filtrado de qualquer maneira. (Mais sobre isso mais tarde).
O que eu tentei:
Agora, estou ciente de uma infinidade de estimadores de frequência fundamentais, como
- O método de correlação automática
- YIN, e todas as suas dependências
- Método FFT.
etc
YIN: Eu ainda não tentei o YIN.
Método FFT: O método FFT fornecerá todos os harmônicos e fundamentais, mas notei que pode ser complicado, especialmente com esse negócio não estacionário, pois o fundamental nem sempre é o pico mais alto. Muito rapidamente, você tenta descobrir qual dos muitos picos é o fundamental e isso se torna um problema difícil.
Autocorrelação: O método de autocorrelação parece se sair melhor que o método FFT, mas ainda é sensível às irregularidades de amplitude do sinal no domínio do tempo. O método de correlação automática mede a distância entre o lobo central e o próximo lobo mais alto. Essa distância corresponde ao fundamental. No entanto, em casos não estacionários, esse lobo secundário pode ser muito baixo e você pode perdê-lo em algum esquema de limiar.
Ocorreu-me então que talvez eu possa usar um método de subespaço como MUSIC para estimar o fundamental. Ao testar isso, descobri que ele realmente fornece resultados muito bons - ele atinge seu pico - de forma robusta - e mesmo em casos não estacionários - em frequências correspondentes ao fundamental do seu sinal. (Defina o número de sinais que você procura como 2 e ele recuperará o fundamental - por exemplo, escolha os 2 vetores próprios mais altos (correspondentes aos valores mais altos dos valores próprios) da matriz de covariância dos sinais, descarte-os e construa o sub-espaço de ruído do restante, projete sua hipótese contra sinusóides complexos, tome o recíproco, e voila, um belo pseudo-espectro).
Perguntas e Problemas:
- Dito isto, eu ainda gostaria de entender por que isso funciona melhor.
- Em MUSIC, descartamos o subespaço de sinal e usamos o subespaço de ruído. Parece-me que os autovetores do subespaço de sinal são, na verdade, algum tipo de 'melhor ajuste' - eles são, de fato, filtros correspondentes ideais. Então: por que simplesmente não usar diretamente os autovetores do subespaço de sinal? (Eu sei que não é mais MÚSICA, mas por que usar o subespaço de ruído melhor então?)
- Por fim, o problema final é que, embora esse método pareça funcionar com muito mais robustez para sinais não estacionários (como definido acima), o problema é que agora estou sempre recebendo uma resposta - mesmo quando não há nada além de ruído no sistema! (Mencionei acima que o sinal filtrado pré-combinado bruto pode ser apenas um ruído branco às vezes, quando você não possui um sinal periódico).
Que maneiras podem existir para combater isso? Eu tentei olhar para os autovalores e há mais 'curvatura' em sua decadência nos casos em que há apenas ruído VS casos em que há um sinal, mas temo que não seja suficientemente robusto.
Bônus:
- Quando os autovetores de uma matriz de covariância sinusouds VS outra coisa? O que determina se são ou não sinusóides? Por que eles não são ondas quadradas? Ou inserir sinais de outra forma aqui?
Respostas:
A matriz de autocorrelação é diagonalizada por sinusóides quando o processo é estacionário, isso decorre do fato de que o operador de covariância é uma convolução para um processo estacionário. Uma prova mais rigorosa é que que em particular significa que que também é uma função seimidefinida positiva de , portanto, pelo Teorema de Bochner , temos que comprova a reivindicação.
A intuição é que uma matriz de autocorrelação estimada para algum conjunto finito de observações em um sinal se comporta assintoticamente gosta de uma matriz circulante porque a correlação depende apenas das diferenças de tempo, não das posições absolutas e das matrizes circulantes possuem sinusóides discretos como seus autovetores (uma vez que são convolução operadores). Existem muitas provas disso e essa é uma intuição superficial.
O conjunto de funções de autocorrelação diagonalizadas por sinusóides são exatamente aquelas que correspondem a processos estacionários, mas muitas outras funções de autocorrelação serão aproximadamente diagonalizadas por sinusóides durante algum intervalo. Esses processos correspondem àqueles que podem ser aproximados por processos estacionários ao longo de um intervalo. Mais detalhes estão aqui .
Os processos não estacionários gerais podem ter funções de autocorrelação que não precisam ser diagonalizadas por sinusóides.
Os processos estacionários localmente terão um espectro que muda lentamente e / ou um pequeno número de mudanças abruptas e bem espaçadas no espectro. Fala, ruídos de animais, música e muitos outros sons naturais se encaixam nessa descrição. A razão pela qual os algoritmos de identificação do subespaço funcionam, como eu o entendo, é que algumas formas de estacionariedade local (não rigorosa) geralmente se aplicam aos tipos de sinais que analisamos.
fonte