cheby2
Функция расчета БИХ-фильтра Чебышёва 2 типа.
Синтаксис
cheby2(num, den, n, r, fc, type); fc - число.
cheby2(num, den, n, r, fc, type); fc - двухэлементный вектор.
cheby2(num, den, n, r, fc, type, "s"); fc - число.
cheby2(num, den, n, r, fc, type, "s"); fc - двухэлементный вектор.
cheby2(z, p, k, n, r, fc, type); fc - число.
cheby2(z, p, k, n, r, fc, type); fc - двухэлементный вектор.
cheby2(z, p, k, n, r, fc, type, "s"); fc - число.
cheby2(z, p, k, n, r, fc, type, "s"); fc - двухэлементный вектор.
Аргументы
| Имя | Тип данных | Описание |
|---|---|---|
| num | array |
Выходной массив коэффициентов числителя передаточной функции фильтра |
| den | array |
Выходной массив коэффициентов знаменателя передаточной функции фильтра |
| z | carray |
Выходной массив нулей передаточной функции фильтра |
| p | carray |
Выходной массив полюсов передаточной функции фильтра |
| k | double |
Коэффициент усиления фильтра |
| n | integer |
Порядок фильтра |
| r | double |
Коэффициент нестабильности (дБ) в полосе пропускания, должен быть положительным |
| fc | double/array |
Частота среза фильтра (для НЧ и ВЧ фильтров) либо массив частот среза фильтра - для полосовых и режекторных фильтров. Для цифровых фильтров должна быть в пределах от 0 до 1, где 1 соответствует половине частоты дискретизации фильтра, для аналоговых фильтров задается в рад/с и может быть любым действительным положительным числом (максимальное значение ограничивается типом double) |
| type | string |
Тип фильтра, задается строкой в 4-х вариантах: "low", "high", "pass", "stop" |
| "s" | string |
Флаг расчета аналогового фильтра (опциональный аргумент - задается пользователем при необходимости расчета аналогового фильтра) |
Описание
cheby2(num, den, n, r, fc, type) – функция рассчитывает цифровой фильтр Чебышёва 2 типа в виде числителя и
знаменателя передаточной функции. Если частота среза fc задается одним числом, тип фильтра должен быть выбран либо как "low"
(НЧ-фильтр), либо как "high" (ВЧ-фильтр). Результат расчета записывается в массивы num и den, размерность которых должна быть не менее n + 1;
cheby2(num, den, n, r, fc, type) – функция рассчитывает цифровой фильтр
Чебышёва 2 типа в виде числителя и знаменателя передаточной функции. Если частота среза fc
задается вектором из двух элементов, тип фильтра должен быть выбран либо как
"pass" (полосовой фильтр), либо как "stop" (режекторный фильтр).
Результат расчета записывается в массивы num и den, размерность которых должна быть не менее
2 * n + 1;
cheby2(num, den, n, r, fc, type, "s") – функция рассчитывает аналоговый фильтр Чебышёва 2 типа в виде числителя и знаменателя
передаточной функции. Если частота среза fc задается одним числом, тип фильтра должен быть выбран либо как "low" (НЧ-фильтр), либо как "high"
(ВЧ-фильтр). Результат расчета записывается в массивы num и den, размерность которых должна быть не менее n + 1;
cheby2(num, den, n, r, fc, type, "s") – функция рассчитывает
аналоговый фильтр Чебышёва 2 типа в виде числителя и знаменателя передаточной функции. Если
частота среза fc задается вектором из двух элементов, тип фильтра должен быть выбран либо
как "pass" (полосовой фильтр), либо как "stop" (режекторный фильтр).
Результат расчета записывается в массивы num и den, размерность которых должна быть не менее
2 * n + 1;
cheby2(z, p, k, n, r, fc, type) – функция рассчитывает цифровой фильтр Чебышёва 2 типа в виде нулей и полюсов передаточной функции. Если частота
среза fc задается одним числом, тип фильтра должен быть выбран либо как "low" (НЧ-фильтр), либо как "high" (ВЧ-фильтр). Результат расчета
записывается в массивы z и p, размерность которых должна быть не менее n. Коэффициент усиления записывается в переменную k;
cheby2(z, p, k, n, r, fc, type) – функция рассчитывает цифровой фильтр
Чебышёва 2 типа в виде нулей и полюсов передаточной функции. Если частота среза fc задается
вектором из двух элементов, тип фильтра должен быть выбран либо как "pass"
(полосовой фильтр), либо как "stop" (режекторный фильтр). Результат расчета
записывается в массивы z и p, размерность которых должна быть не менее 2 * n. Коэффициент
усиления записывается в переменную k;
cheby2(z, p, k, n, r, fc, type, "s") – функция рассчитывает аналоговый фильтр Чебышёва 2 типа в виде нулей и полюсов передаточной функции.
Если частота среза fc задается одним числом, тип фильтра должен быть выбран либо как "low" (НЧ-фильтр), либо как "high" (ВЧ-фильтр). Результат расчета
записывается в массивы z и p, размерность которых должна быть не менее n. Коэффициент усиления записывается в переменную k;
cheby2(z, p, k, n, r, fc, type, "s") – функция рассчитывает
аналоговый фильтр Чебышёва 2 типа в виде нулей и полюсов передаточной функции. Если частота
среза fc задается вектором из двух элементов, тип фильтра должен быть выбран либо как
"pass" (полосовой фильтр), либо как "stop" (режекторный фильтр).
Результат расчета записывается в массивы z и p, размерность которых должна быть не менее 2 *
n. Коэффициент усиления записывается в переменную k.
Для всех вариантов вызова функции расчета фильтра Чебышёва 2 типа частоты среза задаются в виде величины, нормированной к половине частоты дискретизации фильтра. Например, для НЧ-фильтра с частотой дискретизации 100 Гц и частотой среза 25 Гц необходимо задать параметр fc равным 0.5.
Алгоритм расчета состоит из следующих ключевых операций:
- Расчет аналогового низкочастотного прототипа фильтра Чебышёва 2 типа;
- Преобразование прототипа к заданному типу фильтра (НЧ, ВЧ, ПФ, РФ) с учетом заданных частот среза;
- Билинейное преобразование - для цифровых фильтров;
- Преобразование нулей и полюсов передаточной функции фильтра к коэффициентам числителя и знаменателя - если пользователем выбрана соответствующая форма расчета фильтра.
Подробное описание алгоритма расчета представлено в [1].
Результат
| Имя | Тип данных | Описание |
|---|---|---|
| num | array |
Выходной массив коэффициентов числителя передаточной функции фильтра |
| den | array |
Выходной массив коэффициентов знаменателя передаточной функции фильтра |
| z | carray |
Выходной массив нулей передаточной функции фильтра |
| p | carray |
Выходной массив полюсов передаточной функции фильтра |
| k | double |
Коэффициент усиления фильтра |
Пример 1
var Order: integer, // Порядок фильтра
Ripple: double,// Коэффициент нестабильности в зоне непрозрачности фильтра
Type: string, // Тип фильтра
Cutoff: double, // Частота среза фильтра
Num: array = 10#0, // Числитель
Den: array = 10#0; // Знаменатель
Order = 9;
Ripple = 3;
Cutoff = 0.3;
Type = "low";
cheby2(Num, Den, Order, Ripple, Cutoff, Type);
В результате в массивах Num и Den будут записаны коэффициенты числителя и знаменателя цифрового НЧ-фильтра Чебышёва 2 типа 9-го порядка с нормированной частотой среза 0.3.
Результат выполнения функции:
num = [0.5393458, -0.44536129, 1.2461951, -0.14434385, 0.79854688, 0.79854688, -0.14434385, 1.2461951, -0.44536129, 0.5393458];
den = [1, -1.2790561, 2.5352866, -1.2176383, 1.6021099, 0.19830418, 0.32016668, 0.64433181, -0.10546133, 0.29072186];
Пример 2
var Order: integer, // Порядок фильтра
Ripple: double,// Коэффициент нестабильности в зоне непрозрачности фильтра
Type: string, // Тип фильтра
Cutoff: array = 2#0, // Частота среза фильтра
Num: array = 19#0, // Числитель
Den: array = 19#0; // Знаменатель
Order = 9;
Ripple = 3;
Cutoff[1] = 0.3;
Cutoff[2] = 0.5;
Type = "pass";
cheby2(Num, Den, Order, Ripple, Cutoff, Type, "s");
В результате в массивах Num и Den будут записаны коэффициенты числителя и знаменателя аналогового полосового фильтра Чебышёва 2 типа 9-го порядка с нормированными частотами среза 0.3 и 0.5.
Результат выполнения функции:
num = [0, 1.8042791, 0, 3.1274172, 0, 2.1413185, 0, 0.75631051, 0, 0.14994844, 0, 0.017016986, 0, 0.0010840425, 0, 3.5623236E-5, 0, 4.6241701E-7, 0];
den = [1, 2.4373382, 2.6925972, 4.1208155, 2.4972977, 2.7713886, 1.1442494, 0.96789661, 0.29339295, 0.19113558, 0.044008942, 0.021777674, 0.0038618416, 0.0014030155, 0.00018963854, 4.6938664E-5, 4.6005547E-6, 6.2466313E-7, 3.8443359E-8];
Пример 3
var Order: integer, // Порядок фильтра
Ripple: double,// Коэффициент нестабильности в зоне непрозрачности фильтра
Type: string, // Тип фильтра
Cutoff: double, // Частота среза фильтра
Z: carray = 9#0, // Числитель
P: carray = 9#0, // Знаменатель
K: double; // Коэффициент усиления
Order = 9;
Ripple = 3;
Cutoff = 0.3;
Type = "high";
cheby2(Z, P, K, Order, Ripple, Cutoff, Type);
В результате в массивах Z и P будут записаны коэффициенты нулей и полюсов цифрового ВЧ-фильтра Чебышёва 2 типа 9-го порядка с нормированной частотой среза 0.3. Коэффициенты нулей и полюсов являются комплексными, поэтому в массивах записываются в виде чередующихся действительных и мнимых частей: [ReZ0 ImZ0 ReZ1 ImZ1 ReZ2 ImZ2 ...]. Коэффициент усиления будет записан в переменную К.
Результат выполнения функции:
Z = [0.59771489-0.80170875i, 0.67404343-0.73869172i, 0.80624883-0.59157656i, 0.94105158-0.33826311i, 0.94105158+0.33826311i, 0.80624883+0.59157656i, 0.67404343+0.73869172i, 0.59771489+0.80170875i, 1+0i];
P = [0.58644538+0.79299074i, 0.64374205+0.71105392i, 0.75051415+0.55486102i, 0.85845684+0.31084715i, 0.90497531+0i, 0.85845684-0.31084715i, 0.75051415-0.55486102i, 0.64374205-0.71105392i, 0.58644538-0.79299074i];
K = 0.76688537;
Сопутствующие материалы
- Айфичер Э., Джервис Б. Цифровая обработка сигналов. Практический подход. - Москва: Вильямс, 2004, 992 с.