Eu tenho que calcular a coerência da magnitude ao quadrado (MSC) entre dois sinais. No entanto, usando uma rotina que usa apenas um cone (ou nenhum cone), meu resultado é sempre 1, apesar dos sinais serem claramente diferentes. Isso não acontece se eu usar mais de um cone. Procurando uma explicação para esse resultado anormal, venho com uma característica confusa do próprio MSC. A definição que estou usando é esta
X e Y são os sinais transformados de Fourier que dependem da frequência . No entanto, se você pegar dois números complexos como o valor dessas funções em alguma frequência fixa, o resultado será sempre 1. Sabendo que então
Certamente deve haver algo que eu devo estar entendendo mal, mas não consigo ver o que é. Alguém pode me explicar qual é o problema?
Edit: Vou usar alguns links do Matlab como fontes confiáveis. Definição de coerência MS
http://www.mathworks.com/help/signal/ref/mscohere.html
definição de densidade espectral de potência cruzada
http://www.mathworks.com/help/signal/ref/cpsd.html
(a densidade espectral de potência é a densidade espectral de " auto- cruzamento", ou seja, a transformada de Fourier da autocorrelação).
Outra fonte pode ser encontrada pesquisando no Google sob o nome "Função de coerência no processamento de sinais biomédicos". Desculpe por não postar os links diretos aqui, não tenho "reputação" suficiente
Respostas:
Para qualquer pedaço (janela) de dados, a coerência será, como você observou, 1. Para estimar adequadamente a coerência, você deve calcular a média dos espectros e cruzamentos para várias janelas e, então, calcular a coerência.
Os espectros automáticos XX e YY podem ser calculados em média da maneira convencional. Para o XY de espectro cruzado, você deve calcular a média dos componentes reais e imaginários antes de calcular XY = sqrt (XY [imag] ^ 2 + XY [real] ^ 2).
Isso ajuda? A média de mais de 8 janelas geralmente gera estimativas confiáveis.
fonte