Функция расчета КИХ-фильтра оконным методом.
fir1(num, n, fc, ftype, wtype, scaleFlag); fc - число. fir1(num, n, fc, ftype, wtype, scaleFlag); fc - двухэлементный вектор. fir1(num, n, fc, ftype, wtype, scaleFlag, winParam); fc - число. fir1(num, n, fc, ftype, wtype, scaleFlag, winParam); fc - двухэлементный вектор.
Имя | Тип данных | Описание |
---|---|---|
num | array | Выходной массив коэффициентов импульсной характеристики фильтра |
n | integer | Порядок фильтра |
fc | double/array | Частота среза фильтра (для НЧ и ВЧ фильтров) либо массив частот среза фильтра - для полосовых и режекторных фильтров. Должна иметь значение в пределах от 0 до 1, где 1 соответствует половине частоты дискретизации фильтра |
ftype | string | Тип фильтра, задается строкой в 4-х вариантах: "low", "high", "pass", "stop" |
wtype | string | Тип оконной функции, задается строкой в 7 вариантах: "rectwin", "triang", "hamming", "hann", "blackman", "chebwin", "kaiser" |
scaleFlag | string | Флаг масштабирования коэффициентов фильтра, задается строкой в двух вариантах: "noscale", "scale" |
winParam | double | Дополнительный параметр оконной функции, определяет уровень подавления боковых лепестков для окна Чебышева и ширину главного лепестка и степень подавления боковых для окна Кайзера) |
fir1(num, n, fc, ftype, wtype, scaleFlag) – функция рассчитывает цифровой фильтр с конечной импульсной характеристикой. Расчет ведется оконным методом, вид оконной функции определяется параметром wtype, как описано выше. Если частота среза fc задается одним числом, тип фильтра может быть выбран либо как "low" (НЧ-фильтр), либо как "high" (ВЧ-фильтр). Результат расчета записывается в массив num, размерность которого должна быть не менее n + 1;
fir1(num, n, fc, ftype, wtype, scaleFlag) – функция рассчитывает цифровой фильтр с конечной импульсной характеристикой. Расчет ведется оконным методом, вид оконной функции определяется параметром wtype. Если частота среза fc задается вектором из двух элементов, тип фильтра может быть выбран либо как "pass" (полосовой фильтр), либо как "stop" (режекторный фильтр). Результат расчета записывается в массив num, размерность которого должна быть не менее n + 1;
fir1(num, n, fc, type, wtype, scaleFlag, winParam) – функция рассчитывает цифровой фильтр с конечной импульсной характеристикой. Расчет ведется оконным методом, вид оконной функции определяется параметром winType и дополнительным параметром winParam. winParam определяет уровень подавления боковых лепестков (дБ) для оконной функции Чебышева и ширину главного лепестка и степень подавления боковых для окна Кайзера. Важно. Функция с подобным набором параметров может быть вызвана только для оконных функций Чебышева и Кайзера. Если частота среза fc задается одним числом, тип фильтра может быть выбран либо как "low" (НЧ-фильтр), либо как "high" (ВЧ-фильтр). Результат расчета записывается в массив num, размерность которого должна быть не менее n + 1;
fir1(num, n, fc, type, wtype, scaleFlag, winParam) – функция рассчитывает цифровой фильтр с конечной импульсной характеристикой. Расчет ведется оконным методом, вид оконной функции определяется параметром wtype и дополнительным параметром winParam. winParam определяет уровень подавления боковых лепестков (дБ) для оконной функции Чебышева и ширину главного лепестка и степень подавления боковых для окна Кайзера. Важно. Функция с подобным набором параметров может быть вызвана только для оконных функций Чебышева и Кайзера. Если частота среза fc задается вектором из двух элементов, тип фильтра может быть выбран либо как "pass" (полосовой фильтр), либо как "stop" (режекторный фильтр). Результат расчета записывается в массив num, размерность которого должна быть не менее n + 1;
Для всех вариантов вызова функции расчета КИХ-фильтра оконным методом частоты среза задаются в виде величины, нормированной к половине частоты дискретизации фильтра. Например, для НЧ-фильтра с частотой дискретизации 100 Гц и частотой среза 25 Гц необходимо задать параметр fc равным 0.5.
Алгоритм расчета состоит из следующих ключевых операций:
Подробное описание алгоритма расчета представлено в [1].
Имя | Тип данных | Описание |
---|---|---|
num | array | Выходной массив коэффициентов импульсной характеристики фильтра |
var Order: integer, // Порядок фильтра Type: string, // Тип фильтра Cutoff: double, // Частота среза фильтра WinType: string, // Вид оконной функции ScalingFLag: string, // Флаг масштабирования Num: array = 11#0; // Массив коэффициентов импульсной характеристики фильтра Order = 10; Cutoff = 0.3; Type = "low"; WinType = "blackman"; ScalingFlag = "scale"; fir1(Num, Order, Cutoff, Type, WinType, ScalingFlag);
В результате в массиве Num будут записаны коэффициенты импульсной характеристики цифрового НЧ-фильтра 10-го порядка с нормированной частотой среза 0.3, рассчитанного с использованием оконной функции Блэкмана с использованием масштабирования.
Результат выполнения функции:
num = [9.8043687E-19, -0.0020873, 0.0073051, 0.085631, 0.2426902, 0.3329204, 0.2426902, 0.085631, 0.0073051, -0.0020873, 9.043687E-19];
var Order: integer, // Порядок фильтра Type: string, // Тип фильтра Cutoff: array = 2#0, // Частоты среза фильтра WinType: string, // Вид оконной функции ScalingFLag: string, // Флаг масштабирования WinParam: double, // Параметр оконной функции Чебышева Num: Array = 11#0; // Массив коэффициентов импульсной характеристики фильтра Order = 10; Cutoff[1] = 0.3; Cutoff[2] = 0.5; Type = "pass"; WinType = "chebwin"; ScalingFlag = "noscale"; WinParam = 100; fir1(Num, Order, Cutoff, Type, WinType, ScalingFlag, WinParam);
В результате в массиве Num будут записаны коэффициенты импульсной характеристики цифрового полосового фильтра 10-го порядка с нормированными частотами среза 0.3 и 0.5, рассчитанного с использованием оконной функции Чебышева (с подавлением боковых лепестков на уровне 100 дБ) без масштабирования коэффициентов.
Результат выполнения функции:
num = [0.0012834, 0.003325, -0.034251, -0.083072, 0.052478, 0.2, 0.052478, -0.083072, -0.034251, 0.003325, 0.0012834];