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 pwelch
dengan resolusi yang sangat tinggi (jumlah rata-rata rendah), dan kemudian rebin spektrum yang dihasilkan menggunakan binning logaritmik.
Jawaban:
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
Pengungkapan: Penulis makalah ini berada di institusi yang sama dengan saya.
sumber
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:
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.
sumber