Определение спектра динамического сигнала.

John
Сообщения: 17
Зарегистрирован: 29 сен 2020, 17:57

Определение спектра динамического сигнала.

Сообщение John »

Доброго времени суток!

Я бы хотел спросить у знающих людей, правильны ли мои рассуждения и не изобретаю ли я велосипед.

К примеру есть дискретный сигнал большой длительности и мы выполняем FFT (к примеру 16) скользящим окном с 0-го семпла. После вычисления спектра необходимо вычислить спектр сигнала с 1-го семпла. Понятное дело что можно просто заново вычислить FFT на новых данных, но я задумался с целью оптимизации сделать более эффективно.

По сути нам необходимо скорректировать 1-й семпл так чтобы он был равен значению нового семпла и сдвинуть все на один отчет влево. Все это, как мне кажется можно просто выполнить в частотной области. Я бы хотел узнать верны ли мои шаги?
  1. Корректируем 1-й семпл чтобы его амплитуда была равна новому семплу. В частотной области это соответствует умножению реальной части на константу, т.к. спектр импулься в 0-м отсчете - константа;
  2. Сдвиг всех семплов на 1 влево (т.к. сигнал в FFT подразумевается периодичным то новый семпл появится в конце). В частотной области нужно только умножить на комплексную синусоиду.

John
Сообщения: 17
Зарегистрирован: 29 сен 2020, 17:57

Re: Определение спектра динамического сигнала.

Сообщение John »

В общем написал небольшую программу и кажется все работает. Поправьте если что-то не то, опишу по шагам с примером.

Имеем такой дискретный сигнал на входе:
Изображение
Его спектр в полярной форме:
Изображение
Спектр в прямоугольной форме:
Изображение

К примеру новый семпл равен -2. Смотрим на первый семпл в исходном сигнале, он равен 3. Чтобы скорректировать значение семпла необходимо вычесть 5 из семпла. В частотной области соответственно необходимо просто отнять 0.3125 (1/FFTSize * 5) из реальной части спектра:
Изображение

Далее умножаем на комплексную экспоненту для сдвига сигнала на 1 отсчет влево:
Изображение

В итоге спектр (в полярных координатах) получается таким:
Изображение

Для проверки результата, делаем IFFT:
Изображение

Вроде бы все правильно. Т.е. для пересчета спектра нужно только помножить отсчеты на комплексную экспоненту и прибавить/вычесть константу. Верно?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Определение спектра динамического сигнала.

Сообщение Бахурин Сергей »

Посмотрите здесь: http://www.dsplib.ru/content/goertzelmo ... elmod.html
Там для одной спектральной компоненты. Если надо N, то параллельно N таких блоков

John
Сообщения: 17
Зарегистрирован: 29 сен 2020, 17:57

Re: Определение спектра динамического сигнала.

Сообщение John »

Спасибо!

IgorV
Сообщения: 17
Зарегистрирован: 02 мар 2021, 17:36

Re: Определение спектра динамического сигнала.

Сообщение IgorV »

viewtopic.php?f=6&t=6792 вот тут про устойчивость

Ответить