Як я можу обчислити часовий спектр потужності?


20

Я хотів би обчислити спектр потужності, в якому частоти розташовані логарифмічно.

У методі Вельча існує компроміс між роздільною здатністю частоти результуючого спектру потужності та кількістю середніх значень (тобто похибка в результаті). Я хотів би, щоб цей компроміс був динамічним, тобто робили менше середніх показників для низькочастотних точок, щоб мати більш точну роздільну здатність на низькій частоті.

Чи є стандартний спосіб це зробити?

Я вважаю, що одним із способів було б спочатку виконати pwelchдуже високу роздільну здатність (низька кількість середніх значень), а потім відновити отриманий спектр за допомогою логарифмічного бінінгу.


2
Зазвичай я обчислюю регулярний спектр, а потім просто будую дані в масштабі журналу. Я не впевнений, що це можливо навіть без прямого використання модифікованого визначення DFT, але мені цікаво дізнатися, чи дійсно є способи.
Phonon

Пов'язане питання ОП для тих, хто цікавиться.
Лорем Іпсум

Інший пов'язаний з цим питання про SO: stackoverflow.com/questions/9849233 / ...
nibot

Відповіді:


9

Я знайшов документ, який безпосередньо стосується цього питання:

Перші кілька малюнків у статті добре ілюструють проблему, яку вирішує цей алгоритм, а посилання містять корисну бібліографію інших підходів (постійне перетворення Q, температурне перетворення Фур'є, стаття опитування тощо).

Їх підхід полягає не в тому, щоб переобладнати вихід існуючої оцінки спектру потужності на основі FFT, а лише обчислити дискретне перетворення Фур'є на частотах, що цікавлять (логарифмічно розташовані). Для кожної частоти, яку слід оцінити, вони в основному реалізують алгоритм Вельча, але з довжиною перетворення (а отже, і кількістю середніх значень), спеціально вибраним для кожної частоти. Для обчислення кожного біна частоти використовується весь часовий ряд, але сегментоване по-різному. Результати мають бажану властивість, щоб роздільна здатність (ширина біна) була плавною функцією частоти, і результати можна калібрувати як спектральну щільність потужності, так і спектр потужності.

Реалізація Matlab тут: https://github.com/tobin/lpsd

введіть тут опис зображення Розкриття інформації: Автори цієї роботи перебувають у тому самому закладі, що і я.


1
Які б були переваги обчислення спектру таким чином? Яка мотивація цього методу?
Спейси

1
Це може бути швидше, ніж обчислення спектру потужності за допомогою FFT, а потім за певних обставин відновлення.
nibot

Я запустив реалізацію Python: github.com/rudolfbyker/lpsd Це все ще потребує тестування. Внески вітаються.
rudolfbyker

1

У цьому випадку я б використав a би метод найменших квадратів, щоб обчислити частоту деякого відомого списку значень. Найпоширеніший метод - метод Ломба. Він працює досить схоже на FFT або DFT, але він обчислює частоту лише за визначеними частотами, і він може обробляти відсутні дані, якщо це буде проблемою. Ідея така:

  1. ш ), над якими можна обчислити, що відповідають потрібним діапазонам частот, на які ви бажаєте взяти вибірку.
  2. штjХj

Пх(ω)=12([jХjcosω(тj-τ)]2jcos2ω(тj-τ)+[jХjгріхω(тj-τ)]2jгріх2ω(тj-τ))

Зверніть увагу, це не буде так масштабно, як FFT, тому я б це зробив лише в тому випадку, якщо кількість бажаних частот набагато нижча, ніж FFT, яка потрібна для збору всіх даних.

В іншому випадку можна зробити метод інтерполяції або будь-який інший повторний відбір проби FFT або DFT.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.