Дискретная одномерная фильтрация. Двумерная фильтрация. Функция коррекции фазовых углов.
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 (по умолчанию равный р) позволят назначить любой критический угол в точках разрыва. Функция используется при построении фазочастотных характеристик (ФЧХ) фильтров. Поскольку они строятся редко, оставим за читателем изучение практического применения данной функции.