Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Дискретная фильтрация в 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 – вектор коэффициентов целой части функции передачи.

 

Разработка фильтра с помощью FDATool

Для запуска программы расчета фильтров необходимо набрать ее имя в командной строке MATLAB:

» fdatool

После этого появится окно программы, показанное на рис. 3.

 

Рис. 3. Интерфейс программы fdatool

 

Большая часть команд меню программы fdatool дублирует действия, выполняемые с помощью элементов графического интерфейса, поэтому отдельно обсуждать структуру меню мы не будем. Однако следует отметить, что многим операциям сопоставлены клавиатурные комбинации, узнать которые можно, заглянув именно в меню.

 

Расчет фильтра

Расчет фильтра начинается с задания требуемых параметров на вкладке Design Filter (см. рис. 3). Тип синтезируемой АЧХ выбирается с помощью переключателя Filter Туре. Возможны следующие варианты: Lowpass (ФНЧ), Highpass (ФВЧ), Bandpass (полосовой фильтр), Bandstop (режекторный фильтр). Выбор пятого, самого нижнего, положения переключателя позволяет использовать раскрывающийся список, в котором перечислены более сложные варианты: Differentiator (дифференцирующий фильтр), Hilbert Transformer (преобразователь Гильберта), Multiband (многополосный фильтр), Arbitrary Magnitude (произвольная АЧХ) и Arbitrary Group Delay (произвольная групповая задержка).

Выбрав категорию синтезируемой АЧХ, следует выбрать тип синтезируемого фильтра, установив переключатель, расположенный в разделе Design Method, в положение IIR (рекурсивный) или FIR (нерекурсивный). Каждому положению переключателя соответствует список возможных методов синтеза. Состав этого списка меняется в зависимости от выбранного типа АЧХ. Например, при синтезе фильтра с произвольной зависимостью групповой задержки от частоты (Arbitrary Group Delay) переключатель автоматически установится в положение IIR, а в списке будет доступен всего один метод – метод минимизации p-нормы ошибки (Constrained Least Pth Norm). В случае синтеза АЧХ четырех простейших типов набор возможных методов синтеза значительно шире:

□ нерекурсивные фильтры (FIR). Здесь доступны следующие методы:

· Equiripple – синтез фильтров с равномерными пульсациями АЧХ методом Ремеза;

· Least–Squares – минимизация среднеквадратического отклонения АЧХ от заданной;

· Window – синтез с использованием весовых функций (окон);

 

□ рекурсивные фильтры (IIR). Здесь доступны четыре варианта синтеза по различным аналоговым прототипам методом билинейного z-преобразования:

· Butterworth – синтез фильтра Баттерворта;

· Chebyshev Type I – синтез фильтра Чебышева первого рода;

· Chebyshev Type II – синтез фильтра Чебышева второго рода; Elliptic – синтез эллиптического фильтра.

 

Замечание      

Набор доступных методов синтеза зависит от того, установлен ли пакет Filter Design.

 

Далее необходимо выбрать порядок фильтра в разделе Filter Order. Во многих случаях помимо явного указания порядка в поле ввода Specify order возможен автоматический выбор порядка путем установки переключателя в положение Minimum order.

Наконец, необходимо задать числовые параметры этой АЧХ в разделах Frequency Specifications и Magnitude Specifications (при выборе типа АЧХ из дополнительного раскрывающегося списка эти два раздела объединяются под общим названием Frequency and Magnitude Specifications). Содержимое этих областей окна меняется в зависимости от выбранного типа АЧХ. На рис. 3 показаны поля ввода параметров, соответствующие синтезу ФНЧ. При заполнении полей ввода можно ссылаться на переменные, существующие в данный момент в рабочей области памяти MATLAB.

Числовые параметры, которые необходимо задать, иллюстрируются графиком, выводимым в разделе Filter Specifications. Вид этого графика также меняется в зависимости от выбранного типа АЧХ, на рис.3 он соответствует синтезу ФНЧ.

Выбрав метод синтеза и задав характеристики фильтра, щелкните на расположенной в нижней части окна кнопке Design Filter. Программа fdatool вызовет нужную функцию синтеза, передав ей указанные вами спецификации фильтра.

 

Замечание      

Если установлен пакет Filter Design, в программе fdatool можно установить флажок Turn quantization on, чтобы сделать доступной вкладку Set Quantization Parameters, позволяю­щую задавать параметры квантования коэффициентов фильтра.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 260.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...