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?