Como você calcula o nivelamento espectral de uma FFT?

17

Ok, o nivelamento espectral (também chamado entropia de Wiener) é definido como a razão entre a média geométrica de um espectro e sua média aritmética.

Wikipedia e outras referências dizem o espectro de poder . Não é que o quadrado do Fourier se transforma? A FFT produz um "espectro de amplitude" e então você calcula isso para obter um "espectro de potência"?

Basicamente, o que eu quero saber é, se spectrum = abs(fft(signal)), qual delas está correta?

  • spectral_flatness = gmean(spectrum)/mean(spectrum)
  • spectral_flatness = gmean(spectrum^2)/mean(spectrum^2)

A definição da Wikipedia parece usar a magnitude diretamente:

ondex(n)representa a magnitude donúmerodabarran.

Flatness=n=0N1x(n)Nn=0N1x(n)N=exp(1Nn=0N1lnx(n))1Nn=0N1x(n)
x(n)n

Os documentos SciPy definem o espectro de potência como:

Quando a entrada a é um sinal no domínio do tempo e A = fft(a), np.abs(A)é seu espectro de amplitude e np.abs(A)**2é seu espectro de potência.

Esta fonte concorda com a definição de "espectro de potência" e a chama :Sf(ω)

Podemos definir que é a transformada de Fourier do sinal no período T, e definir o espectro de potência da seguinte forma: S f ( ω ) = lim T 1FT(ω)Sf(ω)=limT1TFT(ω)2.

Esta fonte define a entropia de Wiener em termos de .S(f)

Mas não vejo o quadrado em equações como esta , que parecem basear-se no espectro de magnitude :

Sflatness=exp(1Nklog(umak))1Nkumak

Da mesma forma, outra fonte define a planicidade espectral em termos do espectro de potência, mas depois usa diretamente a magnitude das caixas da FFT, o que parece conflitar com a definição acima de "espectro de potência".

"Espectro de poder" significa coisas diferentes para pessoas diferentes?

endólito
fonte
de acordo com a Wikipedia: A planicidade espectral ak representa a magnitude do número da barra k.
Hamed Gholami
Olá @ endolith, você recebeu uma resposta satisfatória que está disposta a aceitar?
jojek
@jojek Não, ainda não
endolith
1
@endolith, acredito que Peter acabou de bater o prego na cabeça;)
jojek
@jojek Eu tentei perfurar a unha através do quadro. 😂
Peter K.

Respostas:

4

A referência mais autoritária que posso encontrar é de Jayant & Noll, Digital Coding Of Waveforms , (c) Bell Telephone Laboratories, Incorporated 1984, publicado por Prentice-Hall, Inc.

Na página 57, eles definem o nivelamento espectral:

Nivelamento espectral

e, anteriormente, na página 55 eles definem :Sxx

Definição do espectro de potência

Portanto, a versão FFT ao quadrado é a que você deseja.

Parece que Makhoul & Wolf, Linear Prediction e Spectral Analysis of Speech , Bolt, Beranek e Newman, Inc. Technical Report, 1972 também estão disponíveis.

E tem a mesma definição:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Peter K.
fonte
7

Se a definição de nivelamento exigir que você use um espectro de potência, sim, você deve quadrar as magnitudes conforme a referência da documentação do SciPy. Na equação que você referenciou onde não viu uma quadratura, acho que você não pode ler muito sobre ela; isso diz que

Sfeuumatness=exp(1Nkregistro(umak))1Nkumak

mas não vejo uma definição para umakqualquer lugar. Se você deseja que o espectro seja proporcional à potência em cada compartimento, você precisa quadrar.

Jason R
fonte
Eu acho que essa é uma pergunta sobre o que a definição realmente é , então
endolith
de acordo com uma medida de nivelamento espectral segmentar para discriminação harmônica-percussiva umakrepresenta o espectro de amplitude do número de posição k.
Hamed Gholami
@HamedGholami Por favor, não digite seu comentário como resposta novamente. Seu comentário não fornece uma resposta para a pergunta, mas tenta ser útil aqui.
Peter K.
@PeterK. Eu acho que novos usuários não podem postar comentários, mas podem postar respostas.
Endolith
1
@endolith Entendido. Mas mesmo depois que jojek moveu sua primeira resposta para ser um comentário sobre a pergunta, Hamed reeditou o mesmo comentário como resposta. Esse é o comportamento que estou querendo dissuadir: republicar novamente depois que a "resposta" foi movida.
Peter K.
4

As definições variam, não são? A primeira coisa a ser resolvida é se concordamos que a densidade espectral de potência é equivalente ao espectro de potência ou definimos o que queremos dizer com ambos. Proakis e Salehi os usam como sinônimos . Seguindo em frente, acho que as discrepâncias se devem a definições diferentes, para sinais que possuem um, do espectro de potência. A definição usual disso é a magnitude ao quadrado dos dados transformados de Fourier. O teorema de Wiener-Khinchin fornece outra rota para o espectro de potência dos sinais WSS através da transformação de Fourier da autocorrelação. Dependendo de você definir ou não o espectro de potência com um quadrado, você obtém um quadrado no nivelamento espectral.

Outros usam a magnitude da transformada de Fourier . Alguns chamam isso de "espectro de potência" e reservam o nome " densidade do espectro de potência " para a derivada do "espectro de potência", enquanto outros reservam o termo "espectro de potência" para a integral da transformação de Fourier da autocorrelação (o que outros chamam o espectro de potência). Como você pode ver, as definições são abundantes; sinta-se à vontade para inventar sua propriedade :) Ou siga o padrão Wiener-Khinchin.

Pergunta relacionada : Diferença entre densidade espectral de potência, potência espectral e relações de potência?

Emre
fonte
Isso também diz "espectro de potência".
Endolith 13/04
1
ಠ_ಠ
endólito 16/05/12
0

É uma boa pergunta, uma que eu estava me perguntando também. A planicidade espectral (também conhecida como Entropia de Weiner) é simplesmente uma medida da 'pontilidade' de um vetor.

Essa fonte parece indicar que o vetor em consideração é a densidade espectral de potência; nesse caso, você precisa quadrar. Se você quadratura o espectro de magnitude, está acentuando picos sobre o caso em que não quadraciona obviamente, e acho que isso também faz mais sentido intuitivo.

Spacey
fonte