Aracılığıyla paylaş


series_iir()

Bir seriye Sonsuz Dürtü Yanıtı filtresi uygular.

İşlev, giriş olarak dinamik sayısal dizi içeren bir ifade alır ve Sonsuz Dürtü Yanıtı filtresi uygular. Filtre katsayılarını belirterek işlevini kullanarak şunları yapabilirsiniz:

işlevi, filtrenin paydaları ve paylar katsayılarının dinamik dizisini ve iki statik dinamik dizisini içeren sütunu giriş olarak alır ve filtreyi sütuna uygular. Filtrelenmiş çıkışı içeren yeni bir dinamik dizi sütunu verir.

Sözdizimi

series_iir(seri, paydaları , paydaları)

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
silsile dynamic ✔️ Sayısal değerler dizisi, genellikle make-series veya make_list işleçlerinin elde edilen çıkışıdır.
paylar dynamic ✔️ Filtrenin sayısal katsayılarını içeren sayısal değerler dizisi.
paydalar dynamic ✔️ Filtrenin payda katsayılarını içeren sayısal değerler dizisi.

Önemli

0'a a bölmekten kaçınmak için ilk öğesinin (yani ) a[0]sıfır olmaması gerekir. Aşağıdaki formüle bakın.

Filtrenin özyinelemeli formülü

  • X giriş dizisini ve sırasıyla n_a ve n_b uzunluklarının a ve b katsayılarını dikkate alın. Y çıkış dizisini oluşturacak filtrenin aktarım işlevi şu şekilde tanımlanır:
Y i = a0-1(b0Xi + b1Xi-1 + ... + bnb-1 Xi-nb-1 - a1Yi-1-a 2Yi-2 - ... - ana-1 Yi-na-1)

Örnek

Birikmeli toplamı hesaplama. iir filtresini katsayılar paydaları=[1,-1] ve numerators=[1] ile kullanın:

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

Çıktı

x y
1.0 1.0
2.0 3.0
3.0 6,0
4,0 10.0

Bunu bir işleve şu şekilde sarmalarsınız:

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)

Çıktı

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