ellip
Функция расчета эллиптического БИХ-фильтра.
Синтаксис
ellip(num, den, n, fc, apass, astop, type); fc - число.
ellip(num, den, n, fc, apass, astop, type); fc - двухэлементный вектор.
ellip(num, den, n, fc, apass, astop, type, "s"); fc - число.
ellip(num, den, n, fc, apass, astop, type, "s"); fc - двухэлементный вектор.
ellip(z, p, k, n, fc, apass, astop, type); fc - число.
ellip(z, p, k, n, fc, apass, astop, type); fc - двухэлементный вектор.
ellip(z, p, k, n, fc, apass, astop, type, "s"); fc - число.
ellip(z, p, k, n, fc, apass, astop, type, "s"); fc - двухэлементный вектор.
Аргументы
| Имя | Тип данных | Описание |
|---|---|---|
| num | array |
Выходной массив коэффициентов числителя передаточной функции фильтра |
| den | array |
Выходной массив коэффициентов знаменателя передаточной функции фильтра |
| z | array/carray |
Выходной массив нулей передаточной функции фильтра |
| p | array/carray |
Выходной массив полюсов передаточной функции фильтра |
| k | double |
Коэффициент усиления фильтра |
| n | integer |
Порядок фильтра |
| fc | double/array |
Частота среза фильтра (для НЧ и ВЧ фильтров) либо массив частот среза фильтра - для полосовых и режекторных фильтров. Для цифровых фильтров должна быть в пределах от 0 до 1, где 1 соответствует половине частоты дискретизации фильтра, для аналоговых фильтров задается в рад/с и может быть любым действительным положительным числом (максимальное значение ограничивается типом double) |
| apass | double |
Уровень нестабильности в полосе пропускания [дБ] |
| astop | double |
Уровень подавления в зоне непрозрачности [дБ] |
| type | string |
Тип фильтра, задается строкой в 4-х вариантах: "low", "high", "pass", "stop" |
| "s" | string |
Флаг расчета аналогового фильтра (опциональный аргумент - задается пользователем при необходимости расчета аналогового фильтра) |
Описание
ellip(num, den, n, fc, apass, astop, type) – функция рассчитывает цифровой эллиптический фильтр
в виде числителя и знаменателя передаточной функции. Если частота среза fc задается одним числом, тип фильтра может быть выбран либо как "low"
(НЧ-фильтр), либо как "high" (ВЧ-фильтр). Результат расчета записывается в массивы num и den, размерность которых должна быть не менее n + 1;
ellip(num, den, n, fc, apass, astop, type) – функция рассчитывает цифровой эллиптический фильтр в виде числителя и знаменателя
передаточной функции. Если частота среза fc задается вектором из двух элементов, тип фильтра может быть выбран либо как "pass" (полосовой фильтр),
либо как "stop" (режекторный фильтр). Результат расчета записывается в массивы num и den, размерность которых должна быть не менее 2 * n + 1;
ellip(num, den, n, fc, apass, astop, type, "s") – функция рассчитывает аналоговый эллиптический фильтр в виде числителя и
знаменателя передаточной функции. Если частота среза fc задается одним числом, тип фильтра может быть выбран либо как "low" (НЧ-фильтр), либо как "high"
(ВЧ-фильтр). Результат расчета записывается в массивы num и den, размерность которых должна быть не менее n + 1;
ellip(num, den, n, fc, apass, astop, type, "s") – функция рассчитывает аналоговый эллиптический фильтр в виде числителя и
знаменателя передаточной функции. Если частота среза fc задается вектором из двух элементов, тип фильтра может быть выбран либо как "pass"
(полосовой фильтр), либо как "stop" (режекторный фильтр). Результат расчета записывается в массивы num и den, размерность которых должна быть не менее 2 * n + 1;
ellip(z, p, k, n, fc, apass, astop, type) – функция рассчитывает цифровой эллиптический фильтр в виде нулей и полюсов передаточной функции.
Если частота среза fc задается одним числом, тип фильтра может быть выбран либо как "low" (НЧ-фильтр), либо как "high" (ВЧ-фильтр).
Результат расчета записывается в массивы z и p, размерность которых должна быть не менее n. Коэффициент усиления записывается в переменную k;
ellip(z, p, k, n, fc, apass, astop, type) – функция рассчитывает цифровой эллиптический фильтр в виде нулей и полюсов передаточной функции.
Если частота среза fc задается вектором из двух элементов, тип фильтра может быть выбран либо как "pass" (полосовой фильтр), либо как "stop"
(режекторный фильтр). Результат расчета записывается в массивы z и p, размерность которых должна быть не менее 2 * n. Коэффициент усиления записывается в переменную k;
ellip(z, p, k, n, fc, apass, astop, type, "s") – функция рассчитывает аналоговый эллиптический фильтр в виде нулей и полюсов передаточной функции.
Если частота среза fc задается одним числом, тип фильтра может быть выбран либо как "low" (НЧ-фильтр), либо как "high" (ВЧ-фильтр). Результат расчета записывается
в массивы z и p, размерность которых должна быть не менее n. Коэффициент усиления записывается в переменную k;
ellip(z, p, k, n, fc, apass, astop, type, "s") – функция рассчитывает аналоговый эллиптический фильтр в виде нулей и полюсов передаточной функции.
Если частота среза fc задается вектором из двух элементов, тип фильтра может быть выбран либо как "pass" (полосовой фильтр), либо как "stop" (режекторный фильтр).
Результат расчета записывается в массивы z и p, размерность которых должна быть не менее 2 * n. Коэффициент усиления записывается в переменную k.
Для всех вариантов вызова функции расчета эллиптического фильтра частоты среза задаются в виде величины, нормированной к половине частоты дискретизации фильтра. Например, для НЧ-фильтра с частотой дискретизации 100 Гц и частотой среза 25 Гц необходимо задать параметр fc равным 0.5.
Алгоритм расчета состоит из следующих ключевых операций:
- Расчет аналогового низкочастотного прототипа эллиптического фильтра;
- Преобразование прототипа к заданному типу фильтра (НЧ, ВЧ, ПФ, РФ) с учетом заданных частот среза;
- Билинейное преобразование - для цифровых фильтров;
- Преобразование нулей и полюсов передаточной функции фильтра к коэффициентам числителя и знаменателя - если пользователем выбрана соответствующая форма расчета фильтра.
Подробное описание алгоритма расчета представлено в [1].
Результат
| Имя | Тип данных | Описание |
|---|---|---|
| num | array |
Выходной массив коэффициентов числителя передаточной функции фильтра |
| den | array |
Выходной массив коэффициентов знаменателя передаточной функции фильтра |
| z | array/carray |
Выходной массив нулей передаточной функции фильтра |
| p | array/carray |
Выходной массив полюсов передаточной функции фильтра |
| k | double |
Коэффициент усиления фильтра |
Пример 1
var Order: integer, // Порядок фильтра
Type: string, // Тип фильтра
Cutoff: double, // Частота среза фильтра
Apass: double,// Уровень нестабильности в полосе пропускания
Astop: double,// Уровень подавления в зоне непрозрачности
Num: array = 10#0, // Числитель
Den: array = 10#0; // Знаменатель
Order = 9;
Cutoff = 0.3;
Apass = 3;
Astop = 50;
Type = "low";
ellip(Num, Den, Order, Cutoff, Apass, Astop, Type);
В результате в массивах Num и Den будут записаны коэффициенты числителя и знаменателя цифрового эллиптического НЧ-фильтра 9-го порядка с нормированной частотой среза 0.3.
Результат выполнения функции:
num = [0.0104 -0.0265 0.0514 -0.0467 0.0248 0.0248 -0.0467 0.0514 -0.0265 0.0104 ];
den = [1 -5.9045 17.5374 -33.2533 43.9319 -41.6951 28.3995 -13.4114 4.0104 -0.5883];
Пример 2
var Order: integer, // Порядок фильтра
Type: string, // Тип фильтра
Cutoff: array = 2#0, // Частота среза фильтра
Apass: double,// Уровень нестабильности в полосе пропускания
Astop: double,// Уровень подавления в зоне непрозрачности
Num: array = 19#0, // Числитель
Den: array = 19#0; // Знаменатель
Order = 9;
Cutoff[1] = 0.3;
Cutoff[2] = 0.5;
Apass = 3;
Astop = 50;
Type = "pass";
ellip(Num, Den, Order, Cutoff, Apass, Astop, Type, "s");
В результате в массивах Num и Den будут записаны коэффициенты числителя и знаменателя аналогового полосового эллиптического фильтра 9-го порядка с нормированными частотами среза 0.3 и 0.5.
Результат выполнения функции:
num = [0 0.0029 0 0.0042 0 0.0025 0 0.0008 0 0.0002 0 0 0 0 0 0 0 0 0];
den = [1 0.1125 1.4804 0.1477 0.9531 0.0828 0.3499 0.0259 0.0806 0.0049 0.0121 0.0006 0.00120 0.0001 0 0 0 0];
Пример 3
var Order: Integer, // Порядок фильтра
Type: String, // Тип фильтра
Cutoff: Double, // Частота среза фильтра
Apass: Double,// Уровень нестабильности в полосе пропускания
Astop: Double,// Уровень подавления в зоне непрозрачности
Z: Carray = 9#0, // Числитель
P: Carray = 9#0, // Знаменатель
K: Double; // Коэффициент усиления
Order = 9;
Cutoff = 0.3;
Apass = 3;
Astop = 50;
Type = "high";
ellip(Z, P, K, Order, Cutoff, Apass, Astop, Type);
В результате в массивах Z и P будут записаны коэффициенты нулей и полюсов цифрового эллиптического ВЧ-фильтра 9-го порядка с нормированной частотой среза 0.3. Коэффициенты нулей и полюсов являются комплексными, поэтому в массивах записываются в виде чередующихся действительных и мнимых частей: [ReZ0 ImZ0 ReZ1 ImZ1 ReZ2 ImZ2 ...]. Коэффициент усиления будет записан в переменную К.
Результат выполнения функции:
Z = [0.59941771-0.80043639i , 0.59941771+0.80043639i , 0.61348619-0.78970545i , 0.61348619+0.78970545i , 0.6689353-0.74332064i , 0.6689353+0.74332064i , 0.83236677-0.5542252i , 0.83236677+0.5542252i , 1+0i];
P = [0.58590121-0.8081264i , 0.58590121+0.8081264i , 0.56780986-0.81142304i , 0.56780986+0.81142304i , 0.49162046-0.82418769i , 0.49162046+0.82418769i , 0.17575927-0.80211095i , 0.17575927+0.80211095i , -0.43993335+0i];
K = 0.1288;
Пример 4
var Order: integer, // Порядок фильтра
Type: string, // Тип фильтра
Cutoff: array = 2#0, // Частота среза фильтра
Apass: double,// Уровень нестабильности в полосе пропускания
Astop: double,// Уровень подавления в зоне непрозрачности
Z: carray = 18#0, // Числитель
P: carray = 18#0, // Знаменатель
K: double; // Коэффициент усиления
Order = 9;
Cutoff[1] = 0.3;
Cutoff[2] = 0.5;
Apass = 3;
Astop = 50;
Type = "stop";
ellip(Z, P, K, Order, Cutoff, Apass, Astop, Type, "s");
В результате в массивах Z и P будут записаны коэффициенты нулей и полюсов аналогового режекторного эллиптического фильтра 9-го порядка с нормированными частотами среза 0.3 и 0.5. Коэффициенты нулей и полюсов являются комплексными, поэтому в массивах записываются в виде чередующихся действительных и мнимых частей: [ReZ0 ImZ0 ReZ1 ImZ1 ReZ2 ImZ2 ...]. Коэффициент усиления будет записан в переменную К.
Результат выполнения функции:
Z = [0+0.30133887i , 0-0.30133887i , 0-0.49509088i , 0+0.49509088i , 0-0.48445206i , 0+0.48445206i , 0+0.33245926i , 0-0.33245926i , -2.465128E-17-0.49777847i , -2.465128E-17+0.49777847i , -2.4433711E-17+0.30297468i , -2.4433711E-17-0.30297468i , -2.4311695E-17+0.30962816i , -2.4311695E-17-0.30962816i , -3.1434585E-17-0.45118311i , -3.1434585E-17+0.45118311i , 0+0.38729833i , 0-0.38729833i];
P = [-0.00016958644+0.29990707i , -0.00016958644-0.29990707i , -0.00089991044+0.29835353i , -0.00089991044-0.29835353i , -0.0038640427+0.29157297i , -0.0038640427-0.29157297i , -0.019775304+0.26087189i , -0.019775304-0.26087189i , -0.18115486+0i , -0.00028281916-0.50015477i , -0.00028281916+0.50015477i , -0.0015164365-0.50275469i , -0.0015164365+0.50275469i , -0.006816515-0.51436065i , -0.006816515+0.51436065i , -0.043338253-0.57170963i , -0.043338253+0.57170963i , -0.82802085+0i];
K = 1;
Сопутствующие материалы
- Айфичер Э., Джервис Б. Цифровая обработка сигналов. Практический подход. - Москва: Вильямс, 2004, 992 с.