次の方法で共有


series_iir()

系列に無限インパルス応答フィルターを適用します。

この関数は、入力としての動的な数値配列を含む式を受け取り、無限インパルス応答フィルターを適用します。 フィルター係数を指定することで、関数を使用して次のことができます。

  • 系列の累積合計を計算する
  • スムージング操作を適用する
  • さまざまな high-passband-passlow-pass フィルターを適用する

この関数は、動的配列と、フィルターの denominators および numerators 係数の 2 つの静的動的配列を含む列を入力として受け取り、列にフィルターを適用します。 フィルター処理された出力を含む、動的配列の新しい列が出力されます。

構文

series_iir(series, numerators , denominators)

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
系列 dynamic ✔️ 数値の配列。通常は、 make-series または make_list 演算子の結果の出力です。
numerators dynamic ✔️ フィルターの分子係数を含む数値の配列。
分母 dynamic ✔️ フィルターの分母係数を含む数値の配列。

重要

0 による除算を避けるため、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)

累積合計を計算します。 係数 denominators=[1,-1] および 数値=[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