реклама на сайте
подробности

 
 
> Вычисление огибающей, Вопрос по преобразованию Гильберта
iggylike
сообщение Oct 29 2008, 16:46
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 4-04-08
Пользователь №: 36 466



Необходимо вычислить огибающую дискретного сигнала. Для этого использую преобразование Гильберта следующим образом:
1). Вычисляю БПФ X(f) по сигналу x(k).
2). Считаю преобразование Гильберта:
x'(k) = (2 / F_d) * Im (sum_{i=1}^{N/2}[X(n) * exp^{2*pi*k*n * i/ N}] ), k = 0..N-1,
где F_d - частота дискретизации.
3). Нахожу аналитический сигнал z = x + ix'.
4). Модуль |z| и будет огибающей.

На практике получается, что в начальные и конечные моменты времени |z| имеет большие скачки, определенно не являющиеся огибающей. Подскажите, является ли такой эффект нормальным результатом или я все же напортачил где-то в вычислениях? И если это нормально, то каким способом лучше склеить огибающие подряд идущих сигналов? Дело в том, что для разных сигналов длина этих "выбросов" разная.

На рисунке слева сигналы во временной области, справа ДПФ. Сигнал x[i]= sin(2*pi*100*i) * exp(-100 *i). Частота дискретизации 1000, длина x - 128.
Построчно:
1). Слева: Входной x (Красный) и расчитанная огибающая |z|(Голубой) На конце значительное расхождение с сигналом. Справа: ДПФ входного.
2). Слева: Обратное преобразование Фурье от предыдущего ДПФ (синий)(посчитал для проверки) и преобразование Гильберта(Зеленый). Справа ДПФ от ОДПФ smile.gif.
3). Слева: преобразование Гильберта (Зеленый). Справа: ДПФ от преобразования Гильберта.

Спасибо за ответ

Сообщение отредактировал iggylike - Oct 29 2008, 16:47
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
iggylike
сообщение Oct 30 2008, 08:54
Сообщение #2





Группа: Новичок
Сообщений: 8
Регистрация: 4-04-08
Пользователь №: 36 466



To DRUID3:
Цитата
А просто модуль отсчетов нельзя? Я так понял сигнал то real...

Про модуль отсчетов ничего не знаюsad.gif Фильтр что ли? Но переделывать, если честно не хотелось бы, разве что, если действительно на много быстрее. Да и FFT использую заточенное под процеccор. Описание метода нашел тут: http://www.mathworks.com/products/demos/sh...ml?product=DS#2. Там описан еще один метод: возведение в квадрат и пропускание через НЧ фильтр, но он дает худший результат.

Цитата
Уточните, у Вас научное или техническое задание? Т.е. строго найти огибающую или сделать приемлемый АМ детектор?

Это ТЗ, причем, кроме названия Envelope Analysis, в нем, по сути, ничего нет. Я это проинтерпретировал именно как выделение огибающей. Сигнал real.

Цитата
У Вас довольно низкое отношение несущей(частоты заполнения) и максимальной частоты спектра огибающей, потому то метод так и "сбоит"...

Повысил частоту заполняющего сигнала, и действительно, метод начал давать хорошие результаты. Но все же, интересно, как бороться с неровностями по краям? Если решения не найдется, то прийдется юзать другой метод sad.gif

To alex_os:
Цитата
Не понял заклинание

Заклинание это смесь латеха с с++, вырвалось само собой) Там мнимая часть от неполного обратного преобразования Фурье с 1 по N/2 элемент (если положить, что все действительное БПФ лежит в массиве с индексами 0..N), удвоенная и деленная на частоту дискретизации.

Цитата
Глюки и выбросы по краям неизбежны, ибо такова суть вещей. Посмотрите на формулу оригинального преобразования Гильберта там интеграл от минус бесконечности до плюс бесконечности....

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

Сообщение отредактировал iggylike - Oct 30 2008, 08:57
Go to the top of the page
 
+Quote Post
sergunas
сообщение Oct 30 2008, 09:44
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 441
Регистрация: 7-12-04
Пользователь №: 1 373



Цитата(iggylike @ Oct 30 2008, 11:54) *
Но все же, интересно, как бороться с неровностями по краям? Если решения не найдется, то прийдется юзать другой метод sad.gif

не буду утверждать на все 100% но наверное можно попробовать побороться.
Смотрите Help Matlab на fdesign.hilbert
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- iggylike   Вычисление огибающей   Oct 29 2008, 16:46
- - DRUID3   А просто модуль отсчетов нельзя? Я так понял сигна...   Oct 29 2008, 17:09
- - alex_os   Цитата(iggylike @ Oct 29 2008, 19:46) Нео...   Oct 29 2008, 19:51
|- - alex_os   Цитата(iggylike @ Oct 30 2008, 11:54) To ...   Oct 30 2008, 10:11
- - iggylike   alex_os: в последнем вашем ответе, который ушел в ...   Nov 3 2008, 12:58
|- - alex_os   Цитата(iggylike @ Nov 3 2008, 15:58) alex...   Nov 4 2008, 11:40
|- - shf_05   в своей практике я сделал так- расчитал в Матлаб ф...   Nov 5 2008, 06:06
|- - iggylike   На сколько я понимаю, фильтр Гильберта имеет асимм...   Nov 5 2008, 08:27
|- - alex_os   Цитата(iggylike @ Nov 5 2008, 11:27) На с...   Nov 5 2008, 11:07
- - DRUID3   Блин, люди, у вас задача сделать тот или иной АМ д...   Nov 5 2008, 20:24
|- - iggylike   Кругом, в том числе на www.dsprelated.com, народ г...   Nov 6 2008, 09:24
|- - DRUID3   Цитата(iggylike @ Nov 6 2008, 11:24) Круг...   Nov 6 2008, 13:07
|- - alex_os   Цитата(DRUID3 @ Nov 6 2008, 16:07) вывод ...   Nov 6 2008, 13:47
- - petrov   Непонятно в чём проблема то взять и в матлабе в fd...   Nov 6 2008, 10:50
- - iggylike   to: petrov ЦитатаМожно без гильбертов всяких квадр...   Nov 6 2008, 11:15
|- - petrov   Цитата(iggylike @ Nov 6 2008, 14:15) to: ...   Nov 6 2008, 11:51
- - iggylike   Всем спасибо за ответы, наконец-то более менее раз...   Nov 6 2008, 13:01


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 05:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016