Ubah FIR menjadi IIR yang setara

8

Apakah ada cara untuk mengonversi a FIRkeIIR filter dengan perilaku paling mirip?

Andrea
sumber
3
Frasa Anda "perilaku paling mirip" membuat pertanyaan ini sulit dijawab. Bisakah Anda menggambarkan apa arti "perilaku paling mirip" bagi Anda?
Richard Lyons
1
Pertanyaannya harus umum. Cara yang melestarikan modul transformasi FIR dan / atau cara untuk lebih mempertahankan fase daripada modul
Andrea

Jawaban:

7

Saya akan mengatakan bahwa jawaban untuk pertanyaan Anda - jika diambil secara harfiah - adalah 'tidak', tidak ada cara umum untuk hanya mengubah filter FIR ke filter IIR.

Saya setuju dengan RBJ bahwa salah satu cara untuk mendekati masalah adalah dengan melihat respons impuls filter FIR dan menggunakan metode domain waktu (seperti metode Prony) untuk memperkirakan respons impuls itu dengan filter IIR.

Jika Anda mulai dari respons frekuensi maka Anda memiliki banyak metode untuk merancang filter IIR. Meskipun diterbitkan sekitar 25 tahun yang lalu, saya percaya bahwa metode oleh Chen dan Parks masih merupakan salah satu cara yang lebih baik untuk mendekati masalah desain. Metode lain yang sangat sederhana untuk desain domain frekuensi filter IIR adalah metode kesalahan persamaan, yang dijelaskan dalam buku Desain Filter Digital oleh Parks dan Burrus. Saya sudah menjelaskannya dalam jawaban ini .

Jika respons fase penting bagi Anda, maka satu masalah yang akan Anda hadapi ketika mendesain filter IIR dalam domain frekuensi adalah pilihan tepat dari respons fase yang diinginkan. Jika bentuk keseluruhan dari fase yang diinginkan diberikan Anda masih memiliki satu derajat kebebasan, yang merupakan penundaan. Misal, jika fase yang diinginkan adalahϕD(ω), dan besarnya yang diinginkan adalah M.D(ω) maka respons frekuensi yang Anda inginkan dapat dipilih sebagai

(1)HD(ω)=M.D(ω)ej(ϕ(ω)-ωτ)

dimana τadalah parameter penundaan yang tidak diketahui. Tentu saja bisa dikatakan begituϕD(ω)diberikan maka Anda tidak ingin memodifikasinya dengan penundaan tambahan (positif atau negatif). Tetapi ternyata dalam praktiknya keterlambatan rata-rata tidak selalu penting, dan - lebih penting - untuk nilai-nilai tertentuτperkiraan Anda akan jauh lebih baik untuk urutan filter yang diberikan daripada yang lain. Jadi keterlambatannyaτ dapat menjadi parameter desain tambahan dan harus dipilih secara optimal atau setidaknya masuk akal.

Saya telah menulis tesis tentang desain filter digital dengan besarnya respon fase yang ditentukan. Satu bab membahas tentang desain domain frekuensi filter IIR. Metode itu dapat digunakan untuk mendesain filter IIR dengan kira-kira fase linier pada pass-band, atau untuk memperkirakan respons fase (dan besarnya) yang diinginkan lainnya. Filter tidak hanya dijamin stabil, tetapi Anda juga dapat meresepkan jari-jari kutub maksimum, yaitu, Anda dapat menentukan margin stabilitas tertentu. Anda juga dapat menemukan metode ini dalam makalah yang diterbitkan dalam Transaksi IEEE pada Pemrosesan Sinyal.

Matt L.
sumber
3

Jawaban Matt L adalah yang terbaik dari sudut pandang DSP.

Ada berbagai macam teknik dari literatur kontrol yang mungkin juga melakukan apa yang Anda minta. Meskipun ini tidak secara eksplisit mengubah filter FIR menjadi IIR, teknik ini umumnya akan menemukan solusi IIR kecuali beberapa kendala lain diterapkan.

Beberapa teknik adalah:

Peter K.
sumber
2

Namun metode lain yang mungkin dapat mendekati (tidak persis cocok) respon frekuensi sewenang-wenang yang diberikan (seperti yang dijelaskan oleh beberapa filter FIR yang diberikan) oleh filter IIR, adalah Evolusi Diferensial. Diferensial Evolusi adalah jenis algoritma genetika yang, untuk penggunaan ini, secara iteratif memilih dan mengadaptasi satu set kutub dan nol dalam upaya untuk meminimalkan kesalahan perbedaan yang dikomputasi. Tampaknya ada beberapa makalah IEEE tentang topik ini, serta bab di salah satu buku Rick Lyons ("Streamlining DSP").

hotpaw2
sumber
2

Jika Anda mencoba mencocokkan respons impuls IIR dengan respons impuls tertentu, namun secara matematis didefinisikan (saya kira FIR sebagus definisi seperti apa pun), saya selalu berpikir bahwa metode Prony adalah yang pertama tusuk pada masalahnya.

Jika Anda mencoba mencocokkan respons frekuensi IIR dengan respons frekuensi tertentu, namun secara matematis ditentukan (saya kira respons frekuensi FIR sama bagusnya dengan definisi), saya baru-baru ini berpikir bahwa Greg Berchin FDLS mungkin cara untuk pergi. Richard Lyons (yang berkomentar untuk pertanyaan Anda), menerbitkan sebuah monograf di mana Greg memiliki bab yang menjelaskan metode ini. Matt L juga telah meneliti dan menerbitkan masalah tersebut.

robert bristow-johnson
sumber
Kode di tautan tertentu dimodifikasi dari versi asli saya oleh orang lain selain saya. Dokumen asli tersedia dari saya secara pribadi, jika saya dapat mengetahui cara menerima pesan email pribadi melalui SE.
Greg Berchin
1

baik ya, karena Anda tidak memerlukan yang sama persis tetapi tidak tanpa kesedihan

Filter FIR setara dengan polinomial

Seseorang dapat memperoleh perkiraan Pade.

Tidak harus stabil, sangat sensitif terhadap penskalaan, dan hasilnya tidak mendebarkan.

https://en.wikipedia.org/wiki/Pad%C3%A9_approximant

Menggunakan jendela hanning sebagai contoh FIR dan rutin Pade di kotak alat simbolis (yang tidak dimiliki kebanyakan orang tetapi gnu Maxima tidak)

Gagasan saya yang lain yang belum saya upayakan adalah menghasilkan proses MA pseudorandom dan kemudian menggunakan estimator ARMA untuk memulihkan fungsi transfer rasional.

p = poly2sym (sym (bulat (100 * hanning (16))))% skala hanning

p = 3 * x ^ 15 + 13 * x ^ 14 + 28 * x ^ 13 + 45 * x ^ 12 + 64 * x ^ 11 + 80 * x ^ 10 + 93 * x ^ 9 + 99 * x ^ 8 + 99 * x ^ 7 + 93 * x ^ 6 + 80 * x ^ 5 + 64 * x ^ 4 + 45 * x ^ 3 + 28 * x ^ 2 + 13 * x + 3

h = pade (p, 'Pesan', [3 3])

h = - (2534 * x ^ 3 + 11071 * x ^ 2 + 10368 * x + 2961) / (- 2213 * x ^ 3 + 1964 * x ^ 2 + 821 * x - 987)

[n, d] = numden (h)

n = - 2534 * x ^ 3 - 11071 * x ^ 2 - 10368 * x - 2961

d = - 2213 * x ^ 3 + 1964 * x ^ 2 + 821 * x - 987

num = sym2poly (n)

num = -2534 -11071 -10368 -2961

den = sym2poly (d)

den = -2213 1964 821 -987

fir = sym2poly (p);

rn = akar (num)

rn = -3.2067 + 0.0000i

-0,5812 + 0,1633i

-0,5812 - 0,1633i

rd = root (den)

rd = -0.6679 + 0,0000i

0,7777 + 0,2510i

0,7777 - 0,2510i

num = num / sum (abs (num)); % koefisien normalisasi

den = den / sum (abs (den));

fir = fir / sum (abs (fir));

[h, z] = freqz (num, den, 1024);

gambar (1) plot (z, log10 (abs (h))); angka ylabel ('dB') (2) [h, z] = freqz (fir, 1,1024); plot (z, log10 (abs (h))); ylabel ('dB')

gaung lagi

Respon pade

Tanggapan Hamming


sumber
0

Itu tergoda untuk berspekulasi bahwa jika respons impuls berjendela, jam panjang L dapat "dimodelkan dengan baik" dengan filter urutan rendah (relatif terhadap L), maka yang terakhir dapat digunakan untuk mengekstrapolasi filter FIR melampaui panjang aslinya.

Apa pro dan kontra praktis dari menggunakan prony (domain waktu) vs menggunakan invfreqz (domain frekuensi)?

-k

Knut Inge
sumber