series_iir()

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

işlevi, 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ının ve pay 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.

Syntax

series_iir(Serisi,paylar,paydalar)

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

Parametreler

Ad Tür Gerekli Açıklama
Serisi dynamic ✔️ Sayısal değerler dizisi, genellikle seri yapma 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ölünmesini önlemek 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 uzunlukların a ve b katsayılarını sırasıyla n_a ve n_b dikkate alın. Y çıkış dizisini oluşturacak filtrenin aktarım işlevi şu şekilde tanımlanır:
Yi =a0-1(b0Xi + b 1 Xi-1 + ... + bnb-1 Xi-nb-1 - a1Yi-1-a2Yi-2 - ... -a na-1 Yi-na-1)

Örnek

Birikmeli toplamı hesaplama. Katsayılar paydaları=[1,-1] ve paylar=[1] olan iir filtresini 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

Çıkış

x y
1.0 1.0
2.0 3.0
3.0 6.0
4.0 10.0

Bunu bir işlevde sarmalama burada anlatılır:

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)

Çıkış

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