Dengan asumsi bahwa Anda melakukan operasi vektor M. elemen sekaligus, Anda dapat membuka gulungan persamaan perbedaan dengan faktor M.cukup mudah untuk filter tiang tunggal sederhana. Asumsikan bahwa Anda telah menghitung semua output hinggay[ n ]. Kemudian, Anda dapat menghitung yang berikutnya sebagai berikut:
y[ N + 1 ]y[ n + 2 ]= ( 1 - a ) y[ n ] + a x [ n + 1 ]= ( 1 - a ) y[ n + 1 ] + a x [ n + 2 ]= ( 1 - a ) ( ( 1 - a ) y[ n ] + a x [ n + 1 ] ) + a x [ n + 2 ]= ( 1 - a)2y[ n ] + a ( 1 - a ) x [ n + 1 ] + a x [ n + 2 ]⋮
Secara umum, Anda bisa menulis y[ n + k ] sebagai:
y[ n + k ] = ( 1 - a)ky[ n ] +∑i = 1ka ( 1 - a)k - ix [ n + i ]
Untuk setiap indeks sampel n + k, ini terlihat seperti filter FIR dengan k + 1 ketukan: satu ketukan mengalikan hasil filter terakhir y[ n ], Dan lainnya k mengetuk gandakan input filter x [ n + 1 ] , ... , x [ n + k ]. Yang menyenangkan adalah bahwa koefisien yang digunakan untuk semua keran ini dapat dihitung ulang, memungkinkan Anda untuk membuka gulungan filter rekursif ke dalamM. M.+ 1-tap filter paralel non-rekursif (filter ini menghitung sampel keluaran y[ N + 1 ] , ... , y[ n + M]), memperbarui istilah umpan balik setiap M.sampel keluaran. Jadi, diberikan kondisi awaly[ n ] (yang diasumsikan sebagai output terakhir yang dihitung pada iterasi vektor sebelumnya), Anda dapat menghitung berikutnya M. output secara paralel.
Ada beberapa peringatan untuk pendekatan ini:
Jika M.menjadi besar, maka Anda akhirnya mengalikan sekelompok angka bersama-sama untuk mendapatkan koefisien FIR yang efektif untuk filter yang belum dibuka. Tergantung pada format angka Anda dan nilaiSebuah, ini bisa memiliki implikasi presisi numerik.
Juga, Anda tidak mendapatkan M.speedup lipat dengan pendekatan ini: Anda akhirnya menghitung y[ n + k ] dengan jumlah apa a k-tap filter FIR. Meskipun Anda sedang menghitungM. output secara paralel, fakta yang harus Anda lakukan koperasi multiply-akumulasi (MAC) bukan implementasi rekursif tingkat pertama sederhana mengurangi beberapa manfaat untuk vektorisasi. Pendekatan non-vektor menggunakan 2 MAC per output, jadi Anda perlu2 M. operasi untuk menghitung M.output. Skema vektor menghitungM. output sekaligus, membutuhkan M.+ 1MAC dalam proses. Jadi, pengurangan operasi dapat dinyatakan sebagai fungsiM. sebagai:
R =M.+ 12 M.=12( 1 +1M.)
Begitu pun dengan M.sangat besar, Anda bisa mendapatkan maksimum 50% pengurangan dalam jumlah perhitungan menggunakan metode ini. Untuk nilai umumM.= 4 dan M.= 8, pengurangannya masing-masing adalah 37,5% dan 43,75%. Namun, selain pengurangan murni dalam jumlah operasi, Anda dapat memperoleh manfaat kinerja tambahan karena pola akses memori yang berbeda yang digunakan oleh pendekatan yang tidak terbuka; untuk implementasi yang lebih sederhana, Anda dapat mengalami keterlambatan karena ketergantungan dari masing-masing sampel keluarany[ n ] pada sampel sebelumnya y[ n - 1 ]. Efek ini jelas sangat tergantung platform.