Bagikan melalui


series_iir()

Menerapkan filter Respons Impuls Tak Terbatas pada seri.

Fungsi tersebut mengambil ekspresi yang berisi array numerik dinamis sebagai input, dan menerapkan filter Respons Impuls Tidak Terbatas. Dengan menentukan koefisien filter, Anda dapat menggunakan fungsi untuk:

Fungsi ini mengambil sebagai input kolom yang berisi array dinamis dan dua array dinamis statis dari koefisien denominator dan numerator filter, dan menerapkan filter pada kolom. Output yang dihasilkan adalah kolom array dinamis baru, yang berisi output yang difilter.

Sintaks

series_iir(denominator pembidik seri , , )

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
series dynamic ✔️ Array nilai numerik, biasanya output yang dihasilkan dari operator seri make atau make_list .
pembidik dynamic ✔️ Array nilai numerik, yang berisi koefisien numerator filter.
denominator dynamic ✔️ Array nilai numerik, yang berisi koefisien denominator filter.

Penting

Elemen pertama dari a (yaitu, a[0]) tidak boleh nol, untuk menghindari pembagian dengan 0. Lihat rumus berikut.

Rumus rekursif filter

  • Pertimbangkan array input X, dan array koefisien a dan b dari panjang n_a dan n_b. Fungsi transfer filter yang akan menghasilkan array output Y, ditentukan oleh:
Y i = 0-1(b0Xi + b1Xi-1 + ... + bnb-1 Xi-nb-1 -1Yi-1-a 2Yi-2 - ... - ana-1 Yi-na-1)

Contoh

Hitung jumlah kumulatif. Gunakan filter iir dengan denominator koefisien=[1,-1] dan numerator=[1]:

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

Hasil

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

Berikut cara mengemasnya dalam sebuah fungsi:

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)

Hasil

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