Bagaimana Anda menghitung kerataan spektral dari FFT?

17

Ok, kerataan spektral (juga disebut entener Wiener) didefinisikan sebagai rasio rata-rata geometrik suatu spektrum terhadap rata-rata aritmatika.

Wikipedia dan referensi lain menyebutkan spektrum kekuatan . Bukankah itu kuadrat dari transformasi Fourier? FFT menghasilkan "spektrum amplitudo" dan kemudian Anda kuadratkan untuk mendapatkan "spektrum daya"?

Pada dasarnya yang ingin saya ketahui adalah, jika spectrum = abs(fft(signal)), yang mana yang benar?

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

Definisi Wikipedia tampaknya menggunakan besarnya secara langsung:

FlSebuahtness=n=0N-1x(n)Nn=0N-1x(n)N=exp(1Nn=0N-1dalamx(n))1Nn=0N-1x(n)
mana mewakili besarnya nomor bin .nx(n)n

Dokumen SciPy mendefinisikan spektrum daya sebagai:

Ketika input a adalah sinyal domain waktu dan A = fft(a), np.abs(A)adalah spektrum amplitudo dan np.abs(A)**2spektrum tenaganya.

Sumber ini setuju tentang definisi "spektrum daya" dan menyebutnya :Sf(ω)

Kita dapat mendefinisikan yang merupakan transformasi fourier dari sinyal dalam periode T, dan mendefinisikan spektrum daya sebagai berikut: S f ( ω ) = lim T 1FT(ω)Sf(ω)=limT1TFT(ω)2.

Sumber ini mendefinisikan entropi Wiener dalam hal S(f) .

Tapi saya tidak melihat kuadrat dalam persamaan seperti ini , yang tampaknya didasarkan pada spektrum besarnya :

SflSebuahtness=exp(1Nkcatatan(Sebuahk))1NkSebuahk

Demikian juga, sumber lain mendefinisikan kerataan spektral dalam hal spektrum daya, tetapi kemudian menggunakan besarnya tempat sampah FFT secara langsung, yang tampaknya bertentangan dengan definisi "spektrum daya" di atas.

Apakah "spektrum kekuatan" memiliki arti yang berbeda bagi orang yang berbeda?

endolit
sumber
menurut Wikipedia: Spectral flatness ak mewakili besarnya bin number k.
Hamed Gholami
Hai @ endolith, apakah Anda mendapatkan jawaban memuaskan yang bersedia Anda terima?
jojek
@jojek Tidak, belum
endolith
1
@endolith, saya percaya bahwa Peter baru saja memukul kepala;)
jojek
@ Jojek saya mencoba untuk meninju paku melalui papan. 😂
Peter K.

Jawaban:

4

Referensi paling otoritatif yang bisa saya dapatkan adalah dari Jayant & Noll, Digital Coding Of Waveforms , (c) Bell Telephone Laboratories, Incorporated 1984, diterbitkan oleh Prentice-Hall, Inc.

Pada halaman 57, mereka mendefinisikan kerataan spektral:

Kerataan spektral

dan, sebelumnya, pada halaman 55 mereka mendefinisikan :Sxx

Definisi spektrum daya

Jadi versi FFT-squared adalah yang Anda inginkan.

Sepertinya Makhoul & Wolf, Prediksi Linear dan Analisis Spektral Pidato , Bolt, Beranek, dan Laporan Teknis Newman, Inc., 1972 juga tersedia.

Dan itu memiliki definisi yang sama:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Peter K.
sumber
7

Jika definisi flatness menyatakan bahwa Anda menggunakan spektrum daya, maka ya, Anda harus menguadratkan magnitude seperti yang ditunjukkan oleh referensi dari dokumentasi SciPy. Dalam persamaan yang Anda referensikan di mana Anda tidak melihat kuadrat, saya tidak berpikir Anda bisa membaca banyak ke dalamnya; dikatakan itu

SflSebuahtness=exp(1Nkcatatan(Sebuahk))1NkSebuahk

tapi saya tidak melihat definisi untuk mana saja. Jika Anda ingin spektrum sebanding dengan kekuatan di setiap nampan, Anda perlu kuadratkan.Sebuahk

Jason R
sumber
Saya kira ini adalah pertanyaan tentang apa definisi sebenarnya adalah , maka
endolit
menurut A Segmental Spectral Flatness Measure for Harmonic-Percussive Discrimination mewakili spektrum amplitudo dari angka bin k. Sebuahk
Hamed Gholami
@HamedGholami Tolong jangan masukkan komentar Anda sebagai jawaban lagi. Komentar Anda tidak memberikan jawaban untuk pertanyaan, tetapi mencoba membantu di sini.
Peter K.
@PeterK. Saya pikir pengguna baru tidak dapat memposting komentar, tetapi dapat memposting jawaban.
endolith
1
@endolith Dipahami. Tetapi bahkan setelah jojek memindahkan jawaban pertamanya menjadi komentar atas pertanyaan itu, Hamed mem-posting ulang komentar yang sama sebagai jawaban. Itulah perilaku yang ingin saya bujuk: reposting lagi setelah "jawaban" mereka dipindahkan.
Peter K.
4

Definisi bervariasi, bukan? Hal pertama yang harus diselesaikan adalah apakah kita setuju bahwa kerapatan spektrum daya setara dengan spektrum daya , atau menentukan apa yang kita maksudkan dengan keduanya. Proakis dan Salehi menggunakannya secara sinonim . Bergerak maju, saya pikir perbedaan disebabkan oleh definisi yang berbeda, untuk sinyal yang memiliki spektrum daya. Definisi yang biasa tentang itu adalah besarnya kuadrat dari data transformasi Fourier. The Wiener-Khinchin teorema menyediakan rute lain untuk spektrum daya untuk sinyal WSS melalui Fourier transform dari autokorelasi. Tergantung pada apakah Anda menentukan spektrum daya dengan kuadrat, Anda mendapatkan kuadrat dalam kerataan spektral.

Lainnya menggunakan besarnya transformasi Fourier . Beberapa menyebut ini "spektrum daya", dan mencadangkan nama " kerapatan spektrum daya " untuk turunan dari "spektrum daya", sementara yang lain mencadangkan istilah "spektrum daya" untuk integral dari transformasi Fourier dari autokorelasi (apa yang orang lain sebut spektrum daya). Seperti yang Anda lihat, definisi berlimpah; jangan ragu untuk menciptakan milik Anda sendiri :) Atau tetap berpegang pada standar Wiener-Khinchin.

Pertanyaan terkait : Perbedaan antara kerapatan spektral daya, daya spektral dan rasio daya?

Emre
sumber
Itu mengatakan "spektrum daya", juga.
endolith
1
ಠ_ಠ
endolith
0

Ini pertanyaan yang bagus, yang juga saya tanyakan pada diri saya sendiri. Kerataan spektral (juga dikenal sebagai Weiner Entropy) hanyalah ukuran dari 'puncak' vektor.

Sumber ini tampaknya menunjukkan bahwa vektor yang dipertimbangkan adalah kepadatan spektral daya, dalam hal ini Anda harus kuadratkan. Jika Anda kuadratkan spektrum magnitudo, Anda menekankan puncak pada kasus di mana Anda tidak jelas, dan saya pikir ini juga lebih masuk akal.

Spacey
sumber