- •Лабораторная работа №8 Синтез дискретных фильтров средствами matlab.
- •Общие сведения:
- •1.Функции синтеза рекурсивных фильтров.
- •1.1.Функции синтеза стандартных фильтров методом билинейного
- •1.2. Функции синтеза по произвольным аналоговым прототипам методом билинейного z-преобразования.
- •1.3. Функция синтеза по произвольным аналоговым прототипам методом инвариантной импульсной характеристики impinvar
- •1.4. Функции субоптимального метода синтеза
- •2. Функции синтеза нерекурсивных фильтров
- •Порядок выполнения лабораторной работы.
- •Индивидуальные задания к лабораторной работе:
- •Контрольные вопросы к лабораторной работе №8
- •Содержание отчета
- •Литература
2. Функции синтеза нерекурсивных фильтров
Рассмотрим три функции синтеза нерекурсивных фильтров fiz1, fiz2, kaiserord.
Функция fiz1 позволяет рассчитывать нерекурсивные полосно-пропускающие фильтры с линейной ФЧХ, в том числе многополосные, методом обратного преобразования Фурье с использованием окон. Синтаксис вызова функции:
b=fiz1(n,n,’ftype’,window,’normalization’)
Здесь n – порядок рассчитываемого фильтра (егоимпульсная характеристика будет содержать n+1 ненулевых отсчетов). Параметра n и ‘ftype’ совместно определяют тип синтезируемого фильтра и его частоту (частоты) среза, частоты среза задаются нормированными к частоте Найквиста (0…1), причем 1 соответствует половине частоты дискретизации. Значения этих параметров зависят от типа фильтра:
- ФНЧ: n – частота среза, параметр ‘ftype’ отсутствует;
- ФВЧ: n – частота среза, параметр ‘ftype’=’ftype’;
- полосовой фильтр: n=[1 2], где 1 и 2 границы полосы пропускания, параметр ‘ftype’ отсутствует.
- режекторный фильтр: n=[1 2], где 1 и 2 границы полосы задерживания, ‘ftype’=’Stop’;
- многополосный фильтр, пропускающий низкие частоты:
n=[12…n], где i - границы полос пропускания, упорядоченные по возростанию, ‘ftype’=’DC-1’. Такой фильтр будет иметь полосы пропускания 0…1, 2…3 и т.д.;
- многополосный фильтр, задерживающий низкие чатоты n=[12…n], где i - границы полос пропускания, упорядоченные по возростанию, ‘ftype’=’DC-0’. Такой фильтр будет иметь полосы пропускания 1…2, 3…4 и т.д.;
Для ФВЧ и режекторных фильтров, а также многополосных фильтров с ненулевым коэффициентом передачи на частоте Найквиста возможен только четный порядок.
Параметр Window задает используемое при синтезе окно. Это должен быть вектор столбец, содержащий n+1 элементов. По умолчанию используется окно Хэмминга, рассчтываемое путем вызова функции hamming(n+1).
Строковый парпметр ‘normalization’ управляет масштабированием рассчитанной импульсной характеристики фильтра.
Результатом работы функции fiz1 является вектор в коэффициентов нерекурсивного фильтра. Рассчитанный фильтр имеет линейную ФЧХ и вносит групповую задержку, не зависимо от чатоты равную n/2 отсчетов.
Функция fiz2 предназначена так же для синтеза нерекурсивных фильтров с линейным ФЧХ методом обратного преобразования Фурье с использованием окон. Отличие заключатся в том, что при синтезе можно задать произвольную кусочно-линейную АЧХ.
Синтаксис вызова функции:
b=fiz2(n,f,m,Npt,lap,window)
здесь n - порядок рассчитываемого фильтра, f и m – векторы одинаковой длины, они совместно определяют желаемую АЧХ. Вектор f содержит значения частот, нормированные к частоте Найквиста, а вектор m – соответствующие этим частотам значения АЧХ. Частоты f должны образовывать неубывающую последовательность, примем f(1)=0 и f(end)=1.
Остальные параметры функции являются не обязательными. Параметр Npt задает число точек, используемое при интерполяции заданной АЧХ, по умолчанию Npt = 512. Параметр lap задает ширину переходов зон вокруг скачков. При интерполяции АЧХ в этих зонах вместо скачка будет сформирован линейный переход. Ширина измеряется в точках, по умолчанию равна 25.
Параметр window задает используемое при синтезе окно. По умолчанию используется окно Хэтминга. Результатом работы функции fiz2 является вектор в коэффициентов нерекурсивного фильтра.
Функция kaiserord предназначена для определения порядка фильтра, удовлетворяющего заданным требованиям, при синтезе функцией fiz1 с использованием окна Кайзера. Функция имеет два варианта синтаксиса:
[n,n,beta,ftype]=kaiserord(f,a,dev,)
C= kaiserord(f,a,dev,,’cell’)
Во втором варианте ситаксиса возвращаемый массив ячеек С содержит полный набор параметров для вызова функции fiz1.
Параметры f и a совместно задают кусочно-постоянную АЧХ. В векторе f должна содержаться возростающая последовательность значений частот. Вектор а задает постоянное значение АЧХ для полос, ограниченных парами частот из вектора f, при этом первая полоса начинается от нулевой частоты, а последняя заканчивается на частоте Найквиста:
- в полосе от нуля до f(1) АЧХ равна a(1);
- в полосе от f(1) до f(2) АЧХ не определена;
- в полосе от f(2) до f(3) АЧХ равна a(2);
- в полосе от f(end-1) до f(end) АЧХ не определена;
- в полосе от f(end) до АЧХ равна a(end).
Таким образом длина вектора f должна быть равна
length(a)*2-2
в вектора а могут содержаться только значения 0 и 1. Параметр dev должен быть вектором тойже длины, что и а, содержащим вещественные положительные числа. Он задает максимально допустимую ошибку воспроизведения кусочно-постоянную АЧХ для отдельных частотных полос. Ошибка задается как обсалютная погрешность АЧХ.
Параметр задает частоту дискретизации. По умолчанию =2, так что частота Найквиста равна еденице.
Результатом работы функции kaiserord является порядок фильтра n, вектор нормированных частот среза n , параметр окна кайзера beta и указатель тпа фильтра ftype. Эти параметры затем должныдолжны использоваться при вызовефункции fiz1 следующим образом:
b=fiz1(n,n,Kaiser(n+1,beta),ftype,’noscale’)
Если использовать второй вариант вызова функии Kaiserord, то функцию fiz1 следует вызывать так:
b=fiz1(C{1},C{2},C{3},C{4},C{5})