Поделиться через


series_iir()

Применяет фильтр бесконечной импульсной характеристики к ряду.

Функция принимает выражение, содержащее динамический числовый массив в качестве входных данных, и применяет фильтр бесконечного импульсного отклика . Указав коэффициенты фильтра, можно использовать функцию для:

  • вычисление совокупной суммы ряда
  • применение операций сглаживания
  • применение различных высокопроходных, полосовых и низкопроходных фильтров

Функция принимает в качестве входных данных столбец, содержащий динамический массив и два статических динамических массива знаменателей фильтра и коэффициентов числовых элементов, и применяет фильтр к столбцу. Она выводит новый столбец динамического массива, содержащий отфильтрованные результаты.

Синтаксис

series_iir(Знаменатели числовых рядов ,, )

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
серия dynamic ✔️ Массив числовых значений, как правило, результирующий результат операторов make-series или make_list .
числовые указатели dynamic ✔️ Массив числовых значений, содержащий коэффициенты числового диктора фильтра.
Знаменателей dynamic ✔️ Массив числовых значений, содержащий коэффициенты знаменателя фильтра.

Внимание

Первый элемент a (то есть a[0]) не должен быть нулевым, чтобы избежать деления на 0. См. следующую формулу.

Рекурсивная формула фильтра

  • Рассмотрим входной массив X и коэффициенты массивов длин n_a и n_b соответственно. Функция передачи фильтра, которая создаст выходной массив Y, определяется следующим образом:
Y i =a 0-1(b 0X i + b1 Xi-1 + ... + bb-1 X i-nb-1 - a1Y i-1-a 2 Yi-2 - ... -n a a-1 Yi-na-1)

Пример

Вычислите совокупную сумму. Используйте фильтр iir с коэффициентами знаменателями=[1,-1] и числителями=[1]:

let x = range(1.0, 10, 1);
print x=x, y = series_iir(x, dynamic([1]), dynamic([1,-1]))
| mv-expand x, y

Выходные данные

x г
1.0 1.0
2.0 3.0
3.0 6,0
4.0 10.0

Вот как упаковать его в функцию:

let vector_sum=(x: dynamic) {
    let y=array_length(x) - 1;
    todouble(series_iir(x, dynamic([1]), dynamic([1, -1]))[y])
};
print d=dynamic([0, 1, 2, 3, 4])
| extend dd=vector_sum(d)

Выходные данные

d dd
[0,1,2,3,4] 10