freqz

Функция расчета комплексной передаточной функции цифрового фильтра.

Синтаксис:

freqz(num, den, size, resp);  Для БИХ-фильтров.
freqz(num, size, resp);  для КИХ-фильтров.

Аргументы:

Имя Тип данных Описание
num array Массив коэффициентов числителя фильтра
den array Массив коэффициентов знаменателя фильтра
size integer Размер рассчитываемой характеристики
resp carray Выходные комплексные коэффициенты передаточной функции фильтра

Описание:

freqz(num, den, size, resp) – функция рассчитывает комплексную передаточную характеристику цифрового фильтра с бесконечной импульсной характеристикой. Точность расчета определяется количеством точек характеристики, которое задается параметром size (должно быть больше нуля);

freqz(num, size, resp) – функция рассчитывает комплексную передаточную характеристику цифрового фильтра с конечной импульсной характеристикой. В данном случае, поскольку КИХ-фильтр всегда устойчив, для расчета достаточно коэффициентов числителя фильтра. Точность расчета определяется количеством точек характеристики, которое задается параметром size (должно быть больше нуля).

Если параметр size не соответствует размерности результирующего массива resp, размерность массива будет изменена в соответствии с параметром size.

Алгоритм расчета основан на расчете коэффициентов полинома, определяемого коэффициентами числителя и знаменателя фильтра. Подробное описание алгоритма расчета представлено в [1].

Результат:

Имя Тип данных Описание
resp carray Массив коэффицциентов комплексной передаточной характеристики цифрового фильтра

Пример 1:

var   Order: integer, // Порядок фильтра
   Type: string, // Тип фильтра   
   Cutoff: double, // Частота среза фильтра
   WinType: string, // Вид оконной функции
   ScalingFLag: string, // Флаг масштабирования   
   Num: array = 11#0, // Числитель   
   Resp: carray = 10#0, // Передаточная характеристика
   Size: integer;   // Размер характеристики   
Order = 10;
Cutoff = 0.3;
Type = "low";
WinType = "blackman";
ScalingFlag = "scale";
Size = 10;
fir1(Num, Order, Cutoff, Type, WinType, ScalingFlag);
freqz(Num, Size, Resp);

В результате в массиве Resp будут записаны коэффициенты передаточной характеристики цифрового НЧ-фильтра 10-го порядка с нормированной частотой среза 0.3, рассчитанного с использованием оконной функции Блэкмана и масштабированием. Поскольку коэффициенты комплексные, в результирующем массиве будут последовательно храниться вещественные и мнимые компоненты коэффициентов.

Результат выполнения функции:

Resp = [1, 0 , -9.7266355E-18, 0.94039743, -0.77738738, 1.3198561E-17, 1.5035412E-17, 0.55477881, 0.33124625, 8.157159E-18, 3.469447E-18, 0.1574824, -0.054904613, 8.157159E-18, -1.2891176E-17, 0.011970329, 0.0010549737, 1.3198561E-17, 4.1129524E-18, 2.6526152E-5];

Пример 2:

var   Order: integer, // Порядок фильтра
   Type: string, // Тип фильтра   
   Cutoff: double, // Частота среза фильтра   
   Num: array = 10#0, // Числитель
   Den: array = 10#0; // Знаменатель   
   Resp: carray = 10#0, // Передаточная характеристика
   Size: integer;   // Размер характеристики
Order = 9;
Cutoff = 0.3;
Type = "low";
Size = 10;
butter(Num, Den, Order, Cutoff, Type);
freqz(Num, Den, Size, Resp);

В результате в массиве Resp будут записаны коэффициенты комплексной передаточной характеристики цифрового НЧ-фильтра Баттерворта 9-го порядка с нормированной частотой среза 0.3.

Результат выполнения функции:

Resp = [1, 0, -0.2378, -0.9713, -0.7378, 0.6748, 0.5, -0.5, -0.0381, 0.0151, 0.0025, 0.0023, 0.0001, 7.3386E-5, 5.3469E-6, -3.4128E-7, 7.6345E-8, -5.3854E-8, 6.5113E-11, -1.2976E-10];

Дополнительные материалы

  1. Сергиенко А.Б. Цифровая обработка сигналов. СПб, БХВ-Петербург, 2011, 768с.