Функции > Обработка сигналов > Дополнительные преобразования > Пример. Преобразование Гильберта
Пример. Преобразование Гильберта
Функция hilbert используется для создания такого преобразования Гильберта вещественного сигнала, чтобы дискретное преобразование Фурье аналитического сигнала имело нулевую величину на отрицательных частотах.
1. Используйте функции sin и cos для определения входного сигнала. Используйте функцию rnd для добавления случайного шума.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
2. Постройте график входного сигнала.
Щелкните для копирования этого выражения
3. Используйте функцию hilbert, чтобы вычислить преобразование Гильберта входного сигнала.
Щелкните для копирования этого выражения
4. Постройте график сигнала преобразования Гильберта.
Щелкните для копирования этого выражения
5. Скомпонуйте и постройте график комплексного сигнала.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
В следующих шагах будет показано, что величина аналитического сигнала представляет собой комплексную огибающую исходного сигнала.
6. Используйте функцию dft, чтобы найти спектр сигнала z1.
Щелкните для копирования этого выражения
7. Постройте график абсолютных значений спектра.
Щелкните для копирования этого выражения
Для векторов коэффициент масштабирования между функцией dft и устаревшей функцией CFFT равен 1/N.
8. Постройте общий график всех четырех сигналов.
Щелкните для копирования этого выражения
Новый сигнал, создаваемый преобразованием Гильберта, связан с входным сигналом в области преобразования следующим образом:
Щелкните для копирования этого выражения
где H - преобразователь Гильберта, фильтр с частотной характеристикой:
Щелкните для копирования этого выражения
для
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
для
Щелкните для копирования этого выражения
Существует возможность провести компоновку H через процедуры и функции конструирования фильтра.
Идеальный преобразователь Гильберта
Коэффициенты для идеального преобразователя Гильберта представлены в книге Lawrence R. Rabiner and Bernard Gold. Theory and Application of Digital Signal Processing, Prentice-Hall, Inc. Дальнейшие примеры основаны на трактовке, приведенной в разделе 14.4 книги Samuel Stearns and Ruth David. Signal Processing Algorithms (Prentice-Hall). Коэффициенты идеального фильтра кадрируются и сдвигаются для получения причинного фильтра нечетной длины L.
1. Задайте длину и центр.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
2. Задайте некадрированные коэффициенты h.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
3. Используйте функцию hamming, чтобы кадрировать коэффициенты с помощью окна Хэмминга, применяя оператор vectorize для перемножения h и окна, элемент за элементом.
Щелкните для копирования этого выражения
4. Используйте функцию gain, чтобы вычислить усиление фильтра на частоте f с коэффициентами h.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
5. Постройте график усиления в зависимости о частоты.
Щелкните для копирования этого выражения
Частота нормализуется до частоты выборки 1.
6. Используйте функции exp и arg, чтобы вычислить фазовый сдвиг фильтра.
Фильтр имеет задержку в C, и мы вычисляем фазовый сдвиг фильтра, связанный с задержанным сигналом. Задержка обладает следующей передаточной функцией:
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
где:
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
7. Постройте график фазового сдвига в градусах.
Щелкните для копирования этого выражения
Сдвиг равен -90 градусов почти по всему частотному диапазону.
Испытание фильтра
1. Определите параметры сигнала.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
2. Используйте функцию exp для создания нового сигнала. Функция rnd добавляет низкочастотный шум.
Щелкните для копирования этого выражения
Если навести курсор на rnd и нажать клавишу F5 для пересчета, можно увидеть другой случайный сигнал T.
Щелкните для копирования этого выражения
3. Поместите сопряжения этих элементов в последние 200 расположений сигнала, чтобы обеспечить вещественный результат при инвертировании.
Щелкните для копирования этого выражения
Новый вектор имеет 1001 элемент, где элементы 1-200 содержат исходный вектор T, а элементы 801-1000 содержат сопряжения T. Для промежуточных элементов установлено значение 0.
4. Найдите преобразование Фурье сигнала T.
Щелкните для копирования этого выражения
Используйте функцию Re для удаления небольшой мнимой ошибки округления. Шум генерируется путем построения для него преобразования T с использованием случайных фаз и величин единиц для первых 200 элементов после первого.
5. Постройте график преобразованного сигнала.
Щелкните для копирования этого выражения
6. Используйте функцию response, чтобы получить отклик вектора ZT для фильтра HamL.
Щелкните для копирования этого выражения
Щелкните для копирования этого выражения
7. Скомпонуйте комплексный сигнал z2, используя первые 800 элементов ZT и последние 800 элементов R.
Щелкните для копирования этого выражения
Сохраните первые 800 элементов вектора преобразования Фурье ZT в вектор a2.
Щелкните для копирования этого выражения
Сохраните последние 800 элементов вектора отклика R в вектор b2.
Щелкните для копирования этого выражения
Определите комплексный сигнал z2.
Щелкните для копирования этого выражения
8. Используйте функцию dft, чтобы вычислить дискретное преобразование Фурье сигнала z2.
Щелкните для копирования этого выражения
Для векторов коэффициент масштабирования между функцией dft и устаревшей функцией CFFT равен 1/P.
9. Постройте график абсолютных значений дискретного преобразования Фурье сигнала z2.
Щелкните для копирования этого выражения
Исходные 200 точек, использовавшиеся для создания сигнала в области преобразования, показаны здесь. Верхняя половина спектра, в сущности, равна нулю, так что фильтр преобразователя Гильберта свою работу выполнил.
Было ли это полезно?