Иллюстрированный самоучитель по MatLab

Дискретная одномерная фильтрация. Двумерная фильтрация. Функция коррекции фазовых углов.

MATLAB может использоваться для моделирования работы цифровых фильтров. Для обеспечения дискретной одномерной фильтрации используется функция filter в следующих формах записи:

  • filter(B.A.X) – фильтрует одномерный массив данных X, используя дискретный фильтр, описываемый следующим конечноразностным уравнением:
a(l) * y(n) = b(1) * x(n) + b(2) * x(n - 1) + ... + b(nb + l) * x(n - nb) - a(2) * y(n - 1) - ... - a(na + l) * y(n - na)

Если а(1) не равно 1, то коэффициенты уравнения нормализуются относительно а (1). Когда X – матрица, функция filten оперирует столбцами X. Возможна фильтрация многомерного (размерности N) массива.

  • [Y. Zf]=filter(В, A. X, Zi) – выполняет фильтрацию с учетом ненулевого начального состояния фильтра Zi; возвращает помимо выходного сигнала Y конечное состояние фильтра Zf;
  • filter(B.A.X,[ ].dim) или filter(B.A,X.Zi.dim) – работает в направлении размерности dim

Рассмотрим типовой пример фильтрации гармонического сигнала на фоне других сигналов – файл с именем filtdem.m из пакета расширения Signal Processing Toolbox.

Следующий кадр иллюстрирует конструирование фильтра с достаточно плоской вершиной амплитудно-частотной характеристики (АЧХ) и полосой частот, обеспечивающего выделение сигнала с частотой 15 Гц и подавление сигналов с частотами 5 и 30 Гц. Для формирования полосы пропускания фильтра используется функция, а для построения АЧХ – функция freqz (обе – из пакета Signal Processing Toolbox). Это позволяет построить график АЧХ созданного фильтра.

Следующий кадр примера иллюстрирует эффективность выделения сигнала заданной частоты (15 Гц) с помощью операции фильтрации – функции filter, описанной выше. Можно заметить два обстоятельства – полученный стационарный сигнал практически синусоидален, что свидетельствует о высокой степени фильтрации побочных сигналов. Однако нарастание сигнала во времени идет достаточно медленно и занимает несколько периодов частоты полезного сигнала. Характер нарастания сигнала во времени определяется переходной характеристикой фильтра.

Заключительный кадр показывает спектр исходного сигнала и спектр сигнала на выходе фильтра (он показан линиями другого цвета, что, к сожалению, не видно на черно-белом рисунке). Для построения спектров используется прямое преобразование Фурье – функция fft.

Этот пример наглядно иллюстрирует технику фильтрации. Рекомендуется просмотреть дополнительные примеры, которые есть в разделе Demos системы применительно к пакету расширения Signal Processing (если этот пакет установлен).

Двумерная фильтрация

Для осуществления двумерной фильтрации служит функция filter2:

  • filter2(B.X) – фильтрует данные в двумерном массиве X, используя дискретный фильтр, описанный матрицей В. Результат Y имеет те же размеры, что и X;
  • filter2(B,X, 'option') – выполняет то же, но с опцией, влияющей на размер массива Y:
    • 'same' – size(Y)=size(X) (действует по умолчанию);
    • 'valid' – size(Y) < size(X), центральная часть двумерной свертки, при вычислении которой не приходится дополнять массивы нулями;
    • 'full' – size(Y) > size(X), полная двумерная свертка.

Функция коррекции фазовых углов unwrap

Фазовые углы одномерных массивов испытывают разрывы при переходе через значения, кратные р. Функции unwrap(P) и unwrap(P,cutoff) устраняют этот недостаток одномерного массива Р, дополняя значения углов в точках разрыва значениями ±2р. Если Р – двумерный массив, то данная функция применяется к столбцам. Параметр cutoff (по умолчанию равный р) позволят назначить любой критический угол в точках разрыва. Функция используется при построении фазочастотных характеристик (ФЧХ) фильтров. Поскольку они строятся редко, оставим за читателем изучение практического применения данной функции.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.