Цифровой фильтр Гильберта

Все что касается фильтрации
Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

Бахурин Сергей писал(а):...Пока я не увижу обоснованных аргументов с вашей стороны считаю дискуссию непродуктивной и умываю руки.
Ну а для меня дискуссия вполне продуктивная. Спасибо! :D
Нашёл ошибку у себя.
Действительно, можно считать
Для любого угла



Так что задача получения пары I,Q путём сдвига исходного сигнала на +45 и -45 градусов потребует на одну операцию умножения больше, чем для сдвига на 90 градусов. Правда памяти в 2 раза потребуется и добавится инверсия знака, пересылки в память...

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

И опять всё неправильно!!!
Интегрировать на интервале
можно только такие H(w) ,

А это выполняется только при

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

Вот более правдоподобный вариант:
Вложения
H?.rar
(52.83 КБ) 446 скачиваний

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

Выводы:
чтобы сдвинуть фазу сигнала X(t) на произвольный угол сначала надо сделать преобразование Гильберта...
Даже как-то неожиданно (лично для меня) :shock:
Хотя всё логично. Исходный сигнал X(t) легко сдвинуть на 180 градусов (инверсией знака). Преобразование Гильберта (сдвиг на 90 градусов) будет выполнять роль некого реперного сигнала. Складывая исходный и реперный сигнал (умноженными на некие коэффициенты) получим X(t) сдвинутый на некую фазу...
Так что моя идея о сдвиге X(t) на +45 и -45 градусов теперь как-то не очень здраво выглядит :)

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »




Пусть X(t) - входной сигнал .


где * - оператор свёртки
На выходе фильтра получим:


Заметим, что



Окончательно:


Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

Вопрос Сергею Бахурину:

Как получить рис.7 из статьи http://www.dsplib.ru/content/hilbert/hilbert.html ?

Я пытаюсь получить следующим образом:

- преобразование Фурье аналитического сигнала
.
1.JPG
Подавление отрицательных частот гораздо больше.
Почему могло появиться такое расхождение?
Последний раз редактировалось Santik 29 июн 2013, 18:48, всего редактировалось 1 раз.

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

Re: Цифровой фильтр Гильберта

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

Вот матлаб скрипт который строит рисунок 7

Код: Выделить всё

%%
N = 64;
k = -N:N;
h = 1./(pi*k).* (1-cos(pi*k));
h(N+1) = 0;

h = zeros(1,length(k)) + 1i*h;
h(N+1)=h(N+1)+1;

figure; stem(real(h)); hold on; stem(imag(h),'r');

fvtool(h)

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

А вот Матлаба я не знаю совсем.... :cry:
Попробуем разобраться:
%%
N = 64;
k = -N:N;
h = 1./(pi*k).* (1-cos(pi*k));
h(N+1) = 0; %% Здесь лежит h(0) ?

h = zeros(1,length(k)) + 1i*h; %% Обнуляем вектор и заносим в его мнимую часть h(k)
h(N+1)=h(N+1)+1;

figure; stem(real(h)); hold on; stem(imag(h),'r');

fvtool(h) %% вычисляем АЧХ


Если я правильно понял перед вызовом функции fvtool(h) в h лежит
Re Im
0 h(-N)
0 h(-N+1)
.....................................
1 h(0)=0
0 h(1)
0 h(2)
.....................................
0 h(N)

Это правильно или нет?

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

Ну вот, результаты совпали:
2.JPG
Выводы:




Таким образом, при

при k=0, и =0 при k не равным 0.

Пусть X(k) - входная последовательность (действительный вектор).
Комплексный фильтр Гильберта:


После фильтра:

* - операция свёртки

Некоторую "несправедливость" я вижу в том, что действительная часть - это просто сдвиг входной последовательности по времени, а мнимая часть - некий фильтр со своей (и неравномерной!) АЧХ.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Гильберта

Сообщение Santik »

Santik писал(а):И опять всё неправильно!!!
Интегрировать на интервале
можно только такие H(w) ,
А это выполняется только при
Это я уже сам себя цитирую... :D
Действительно, если считать H(w) периодической функцией, то при
интеграл в пределах не имеет смысла.
Однако мы можем предположить, что Н(w)=0 при w> wN и w<-wN, где wN - частота Найквиста.
Преимущества такого подхода:
1. Нас вообще-то это ни к чему не обязывает (с математической стороны).
2. В реальной аппаратуре это условие должно выполняться всегда!!!
Выражение

при этом условии будет всегда иметь смысл при любом ограниченном H(w).

Ответить