Перевод из Re в IQ. Что лучше? Квадратурный или Гильберта(БПФ)

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

Re: Перевод из Re в IQ. Что лучше? Квадратурный или Гильберта(БПФ)

Сообщение Бахурин Сергей » 22 июл 2016, 23:55

Santik писал(а):
Бахурин Сергей писал(а): Преобразование Гильберта на основе FFT-IFFT это тоже фильтр, но вы не контролируете его подавление и оно составляет всего 13 дБ.
:shock: Это как? Вернее, в каком диапазоне? И сколько выборок идет на FFT?
Давайте рассмотрим такой пример:

Пусть у нас входной сигнал идет в виде непрерывного очень длинного (в пределе бесконечного) потока цифровых отсчетов и мы хотим произвести расчет его преобразования Гильберта при помощи обнуления спектральных отсчетов в отрицательной области.

Тогда мы должны ограничить выборку FFT для расчета преобразования и реализовать обработку с перекрытием для исключения краевых эффектов. Например ограничим FFT выборку длиной NFFT = 64 точки. Обработка с перекрытием подразумевает следующую процедуру:
1) берем первую выборку x(0:63) --> FFT c обнулением (и умножением на 2) --> IFFT --> получаем комплексный y(0:63), реальная часть которого это х(0:63) а мнимая - ортогональное дополнение.

2) Для исключения краевого эффекта выбираем из y(0:63) только точки с индексами y(16:47). Результат z(16:47) = y(16:47).

3) Следующая выборка исходного сигнала будет смещена не на 64 отсчета на 32. Тогда
x(32:95) --> FFT c обнулением (и умножением на 2) --> IFFT --> y(0:63).

4) Снова выбираем половину центральных отсчетов z(48:79) = y(16:47)

Продолжаем сдвигать на 32 точки входной сигнал, делать 64 точечное преобразование и выбирать только 32 центральных отсчетов.

В результате мы будет иметь поток выходного аналитического сигнала с блочным преобразованием.
И если мы оценим спектральную плотность мощности этого потока то обнаружим боковые лепестки в отрицательной области частот (На рисунке ниже результ при входном сигнала в вииде гауссовского белого шума, NFFT = 64, СПМ построена по 2048 точкам).
hilbert_fft.png
Почему мы видим такую картину? Ответ в свойствах дискретного сигнала. Дело в том что при обнулении FFT мы обнуляем лишь фиксированные точки в спектре, в то время как спектр дискретного сигнала есть непрерывная функция. Таким образом мы не контролируем поведение спектра между точками в которых мы обнулили спектр. Это классический эффект Гиббса.

Я подготовил пример программы которая рассчитывает данный график с использованием DSPL.
Исходный код программы
DSPL проект для MINGW
Быстрый старт

PS Запускать надо под 32 битной версией Windows.
PPS Буду благодарен за помощь в сборке 64 битной DSPL (все исходники предоставлю от вас лишь настроить MINGW по ссылке выше).

Итак в сухом остатке. Использование FFT для преобразования Гильберта это не очень хороший путь.Гораздо лучше делать через фильтрацию, потому что в этом случае мы можем контролировать эффект Гиббса за счет весовой обработки.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: Бахурин Сергей и 1 гость