Eu tenho muitos sinais de EEG e quero analisá-los usando métodos lineares como STFT (Short Time Fourier Transform). No STFT, como otimizar o comprimento da janela de análise para refletir o espectro de frequências de cada janela de análise de maneira adequada?
fourier-transform
stft
Maen
fonte
fonte
Respostas:
Este é o clássico "princípio da incerteza" da Transformação de Fourier. Você pode ter alta resolução no tempo ou alta resolução na frequência, mas não as duas ao mesmo tempo. Os comprimentos da janela permitem que você troque entre os dois.
Se você deseja detectar "eventos" no seu sinal EEG com uma resolução de 10 ms, então esse deve ser o tamanho da sua janela. Isso fornecerá uma resolução de frequência de cerca de 100 Hz.
fonte
O tamanho ideal da janela dependerá do seu aplicativo. Se seu aplicativo é tal que você precisa de informações do domínio do tempo para ser mais preciso, reduza o tamanho das janelas. Se o aplicativo exigir que as informações do domínio da frequência sejam mais específicas, aumente o tamanho das janelas. Como Hilmar mencionou, isso
Uncertainty Principle
realmente deixa você sem outra escolha. Você não pode obter uma resolução perfeita nos dois domínios ao mesmo tempo. Você pode obter uma resolução perfeita em apenas um domínio, ao custo de resolução zero no outro (domínios de tempo e frequência) ou resolução intermediária, mas nos dois domínios.Não sei se isso responde à sua pergunta, pois você perguntou especificamente sobre o STFT. Você pode tentar usar
wavelet transforms
para obter as informações no sinal.Wavelet transforms
lhe dará uma resolução em uma faixa muito maior, analisando o sinal em várias resoluções de janela.fonte
Não conheço o EEG, mas o problema básico (talvez eu deva dizer fundamental) ao usar o STFT é escolher um tamanho de janela adequado. Se o seu EEG for periódico e você desejar resolver os fundamentos e harmônicos, use uma janela 'longa'. Se você deseja detectar o início ou a presença de algum evento ou se está mais interessado no envelope do espectro, pode usar uma janela 'curta'.
fonte
Passei muito tempo otimizando janelas em análise de frequência de tempo ou bancos de filtros . Pode-se otimizá-los para detecção, denoising, separação de sinal ... É muito dependente da aplicação. Como a análise de frequência e tempo é geralmente redundante, otimizar as janelas de análise ou síntese são tarefas diferentes. E comprimento apenas um parâmetro no design da janela.
O problema é ainda mais complexo, pois a formulação discretizada de otimalidade é muito mais complicada do que o caso contínuo no domínio do tempo (consulte, por exemplo, uma transformação de Gabor idealmente concentrada para componentes localizados de frequência e tempo ).
Portanto, minha regra prática atual é: comece com um formato e comprimento de janela que pareça ok. Em seguida, repita a análise com duas janelas com duas vezes e metade do comprimento e combine os resultados.
fonte
Normalmente, o tamanho da janela larga oferece melhor resolução de frequência, mas baixa resolução de tempo e vice-versa. Veja este exemplo em que eu gerei um espectrograma de uma onda senoidal com 5kHz e taxa de amostragem de 22050Hz, a partir do meu código C ++.
O espectrograma acima tem tamanho de janela de 2048 amostras e sobreposição de 1024 amostras.
Veja este espectrograma:
Este tem tamanho de janela de 512 amostras e sobreposição de 256 amostras.
Você consegue ver a diferença? O primeiro tem melhor resolução de frequência que o segundo. Mas o segundo tem melhor resolução de tempo quando comparado ao primeiro. Portanto, a escolha do tamanho da janela depende do seu aplicativo. Se você estiver lidando com amostras de fala para acompanhar o tom, a escolha de um tamanho de janela maior deve ser o apropriado.
fonte