Bagaimana saya bisa menghitung spektrum daya dengan spasi log?

20

Saya ingin menghitung spektrum daya di mana frekuensi ditempatkan secara logaritmik.

Dalam metode Welch ada trade-off antara resolusi frekuensi dari spektrum daya yang dihasilkan dan jumlah rata-rata (yaitu kesalahan dalam hasil). Saya ingin pertukaran ini menjadi dinamis, yaitu melakukan lebih sedikit rata-rata untuk titik frekuensi rendah untuk memiliki resolusi yang lebih baik pada frekuensi rendah.

Apakah ada cara standar untuk melakukan ini?

Saya kira salah satu cara awalnya adalah pwelchdengan resolusi yang sangat tinggi (jumlah rata-rata rendah), dan kemudian rebin spektrum yang dihasilkan menggunakan binning logaritmik.

nibot
sumber
2
Saya biasanya menghitung spektrum reguler dan kemudian hanya memplot data pada skala log. Saya tidak yakin itu bahkan mungkin tanpa menggunakan definisi DFT yang dimodifikasi secara langsung, tetapi saya tertarik untuk melihat apakah memang ada cara.
Phonon
Pertanyaan SO terkait OP untuk mereka yang tertarik.
Lorem Ipsum
Pertanyaan terkait lainnya pada SO: stackoverflow.com/questions/9849233/…
nibot

Jawaban:

9

Saya menemukan makalah yang menjawab pertanyaan ini secara langsung:

Beberapa angka pertama dalam makalah ini dengan baik menggambarkan masalah yang dipecahkan oleh algoritma ini, dan referensi tersebut berisi daftar pustaka yang bermanfaat dari pendekatan lain (transformasi konstanta-Q, transformasi Fourier tempered, artikel survei, dll).

Pendekatan mereka bukan untuk mengolah ulang output dari estimasi spektrum daya berbasis FFT yang ada, tetapi untuk hanya menghitung transformasi Fourier diskrit pada frekuensi yang diinginkan (berjarak logaritmik). Untuk setiap frekuensi yang diperkirakan, mereka pada dasarnya menerapkan algoritma Welch, tetapi dengan panjang transformasi (dan karenanya juga, jumlah rata-rata) yang dipilih secara khusus untuk setiap frekuensi. Perhitungan masing-masing nampan frekuensi menggunakan seluruh rangkaian waktu, tetapi tersegmentasi berbeda. Hasilnya memiliki sifat yang diinginkan bahwa resolusi (lebar bin) adalah fungsi frekuensi yang halus, dan hasilnya dapat dikalibrasi sebagai kerapatan spektral daya atau spektrum daya.

Implementasi Matlab di sini: https://github.com/tobin/lpsd

masukkan deskripsi gambar di sini Pengungkapan: Penulis makalah ini berada di institusi yang sama dengan saya.

nibot
sumber
1
Apa manfaat komputasi dari spektrum dengan cara ini? Apa motivasi untuk metode ini?
Spacey
1
Ini bisa lebih cepat daripada menghitung spektrum daya menggunakan FFT dan kemudian rebinning dalam beberapa keadaan.
nibot
Saya memulai implementasi Python: github.com/rudolfbyker/lpsd Masih perlu pengujian. Kontribusi dipersilahkan.
rudolfbyker
1

Dalam hal ini, saya akan menggunakan metode kuadrat terkecil untuk menghitung frekuensi beberapa daftar nilai yang diketahui. Metode yang paling umum adalah metode Lomb. Ini bekerja sangat mirip dengan FFT atau DFT, tetapi hanya akan menghitung frekuensi pada frekuensi yang ditentukan, dan itu bisa menangani data yang hilang, jika itu menjadi masalah. Idenya adalah sebagai berikut:

  1. w
  2. wtjXj

Px(ω)=12([jXjcosω(tj-τ)]2jcos2ω(tj-τ)+[jXjdosaω(tj-τ)]2jdosa2ω(tj-τ))

Catatan, ini tidak akan skala sebaik FFT akan, jadi saya hanya akan melakukan ini jika jumlah frekuensi yang diinginkan jauh lebih rendah dari FFT yang akan diperlukan untuk mengumpulkan semua data.

Jika tidak, seseorang dapat melakukan metode interpolasi atau pengambilan sampel ulang FFT atau DFT lainnya.

PearsonArtPhoto
sumber