Дискретная фильтрация в MATLAB



Дискретная свертка– основа алгоритма дискретной фильтрации. В MATLAB вычисляется с помощью функции conv.

z=conv(x,y)

Обращение свертки – зная результат свертки и один из сворачиваемых векторов, можно найти второй.

[q,r]=deconv(b,a)

Здесь b – результат свертки, a – один из сворачиваемых векторов, q – искомый второй вектор свертки, r – остаток (если вектор b действительно является сверткой вектора a с чем-нибудь, остаток будет нулевым).

Функция дискретной фильтрации.Основная функция, реализующая дискретную фильтрацию в MATLAB, носит имя filter. В простейшем виде имеет следующий синтаксис:

y=filter(b,a,x)

Здесь b – вектор нерекурсивной части фильтра (числителя функции передачи), a – вектор коэффициентов рекурсивной части фильтра (знаменателя функции передачи), x – входной сигнал. Возвращаемой величиной является вектор отсчетов выходного сигнала фильтра.

Если первый элемент вектора а не равен 1, значения векторов b и а нормируются – делятся на а(1).

Между функциями filter и conv есть два основных различия. Во-первых, функция conv требует задания импульсной характеристики фильтра в виде вектора, поэтому данная импульсная характеристика должна иметь конечную длину. Фактически это означает, что с помощью функции conv можно реализовать только нерекурсивный фильтр. Функция filter позволяет задавать как нерекурсивные, так и рекурсивные фильтры, реализуя в том числе и бесконечные импульсные характеристики. Во-вторых, функция filter возвращает результат, длина которого равна длине входного сигнала

Расчет импульсной характеристики–выполняется функцией impz.

h=impz(b, a, n)

Здесь b – вектор нерекурсивной части фильтра (числителя функции передачи), a – вектор коэффициентов рекурсивной части фильтра (знаменателя функции передачи), n – число отсчетов импульсной характеристики (необязательный параметр)

Расчет частотной характеристики – выполняется функцией freqz.

freqz (b,a,n)

Здесь b – вектор нерекурсивной части фильтра (числителя функции передачи), a – вектор коэффициентов рекурсивной части фильтра (знаменателя функции передачи), n – число точек для расчета (необязательный параметр).

Расчет групповой задержки дискретной системы –выполняется функцией grpdelay.

grpdelay(b,a)

Здесь b – вектор нерекурсивной части фильтра (числителя функции передачи), a – вектор коэффициентов рекурсивной части фильтра (знаменателя функции передачи).

Отображение нулей и полюсов фильтра.Для отображения нулей и полюсов функции передачи фильтра на комплексной плоскости предназначена функция zplane.

zplane(z, p)

zplane(b,a)

Входными параметрами являются векторы-столбцы нулей и полюсов (z,p) либо векторы-строки коэффициентов полиномов числителя и знаменателя функции передачи (b,a). Различение этих двух случаев производится именно по ориентации передаваемых функции векторов.

Преобразование способов описания дискретных фильтров.Необходимость в преобразовании описаний часто возникает из-за того, что некоторый функции расчета систем дают результат в одной форме, а функция, например, построения частотной характеристики, требует задания входных параметров в другой форме.

Функции преобразования способов описания одинаковы для аналоговых и дискретных систем между тремя вариантами: коэффициентами полиномов числителя и знаменателя функции передачи, набора нулей и полюсов, параметрами пространства состояний.

 

tf2zp – преобразование коэффициентов полиномов функции передачи в нули и полюсы функции передачи;

zp2tf — преобразование нулей, полюсов и коэффициента усиления системы в коэффициенты полиномов функции передачи;

tf2ss — преобразование коэффициентов полиномов функции передачи в параметры пространства состояний;

ss2tf — преобразование параметров пространства состояний в коэффициенты полиномов функции передачи;

ss2zp — преобразование параметров пространства состояний в нули и полюсы функции передачи;

zp2ss — преобразование нулей, полюсов и коэффициента усиления системы в параметры пространства состояний;

[z, p, k]=tf2zp(b,a);

[b, a]=zp2tf(z, p, k);

[A, B, C, D]=tf2ss(b,a);

[b, a]=ss2tf(A, B, C, D);

[z, p, k]=ss2zp(A, B, C, D);

[A, B, C, D]=zp2ss(z, p, k);

Единственная особенность их использования в дискретном случае состоит в том, что векторы b и a, содержащие коэффициенты полиномов числителя и знаменателя функции передачи, должны иметь одинаковую длину. Поэтому для удобства преобразования описаний дискретных фильтров служит функция eqtflength, дополняющая нулями в конце более короткий из переданных ей двух векторов:

[b1, a1]= eqtflength(b,a);

    Что касается разложения на простые дроби, здесь преобразование дискретной системы несколько отличается от аналогового случая, поэтому предусмотрена специальная функция reziduez. Данная функция умеет выполнять преобразование в обе стороны. Требуемый тип преобразования определяется количеством выходных параметров:

[r, p, k]=residuez(b, a)

[b, a]=residuez(r, p, k)

Здесь b – вектор числителя функции передачи, a – вектор знаменателя функции передачи, r – вектор вычетов, p – вектор полюсов, k – вектор коэффициентов целой части функции передачи.

 


Дата добавления: 2018-04-05; просмотров: 1352; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!