series_iir()

在數列上套用無限脈衝響應濾波器。

函式會採用包含動態數值陣列的運算式做為輸入,並套用無限脈衝響應濾波器。 藉由指定篩選係數,您可以使用 函式來:

函式會接受包含動態數位的數據行,以及篩選條件分 numerators 係數的兩個靜態動態陣列,並在數據行上套用篩選。 它會輸出新的動態陣列資料行,其中包含已篩選的輸出。

語法

series_iir(系列,numerators,分母)

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
系列 dynamic ✔️ 數值的陣列,通常是 make-seriesmake_list 運算子所產生的輸出。
numerators dynamic ✔️ 數值陣列,包含篩選條件的數值係數。
分母 dynamic ✔️ 數值陣列,包含篩選條件的分母係數。

重要

a 的第一個元素 (意即 a[0]) 不得為零,以避免除以 0。 請參閱 下列公式

濾波器的遞迴公式

  • 請考慮使用輸入陣列 X,並個別使用 n_a 和 n_b 作為 a 和 b 的長度係數。 濾波器的傳輸函式會產生輸出陣列 Y,定義如下:
Yi = a0-1(b0Xi + b1Xi-1 + ... + bnb-1Xi-nb-1 - a1Yi-1-a2Yi-2 - ... - ana-1Yi-na-1)

範例

計算累計總和。 搭配係數 分母=[1,-1] 和 numerators=[1]使用 iir 篩選:

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

輸出

x y
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