Apakah ada keuntungan menggunakan pendekatan jendela di atas Parks-McClellan (disingkat lebih lanjut di sini sebagai PMcC) atau algoritma Least Squares untuk desain filter FIR dari filter low pass? Asumsikan dengan kekuatan komputasi hari ini bahwa kompleksitas algoritma itu sendiri bukan merupakan faktor.
Pertanyaan ini tidak membandingkan PMcC dengan Least Squares tetapi secara khusus jika ada alasan untuk menggunakan teknik desain FIR jendela alih-alih algoritma tersebut, atau apakah teknik windowing untuk menyaring desain yang usang oleh algoritma tersebut dan dipindahkan ke tujuan didaktik?
Di bawah ini adalah salah satu perbandingan di mana saya membandingkan jendela Hamming dengan pendekatan desain favorit saya dengan Least-Squared, menggunakan jumlah keran yang sama. Saya memperluas passband dalam pendekatan Least Squared agar cocok dengan Hamming Window, dan dalam hal ini cukup jelas bahwa Least-Squared akan mengungguli (menawarkan penolakan stop band yang jauh lebih signifikan). Saya belum melakukan ini dengan semua jendela, yang mengarahkan saya ke pertanyaan jika Anda dapat melakukan PMCC dan kuadrat-terkecil, atau jika ada aplikasi lain untuk filter low pass FIR di mana pendekatan windowing akan lebih disukai?
sumber
firpm()
danfirls()
.Jawaban:
Saya setuju bahwa metode desain windowing filter bukan salah satu metode desain yang paling penting lagi, dan mungkin memang itu yang terwakili dalam buku teks tradisional, mungkin karena alasan historis.
Namun, saya pikir penggunaannya dapat dibenarkan dalam situasi tertentu. Saya tidak setuju bahwa kompleksitas komputasi tidak ada masalah lagi. Ini tergantung pada platform. Duduk di komputer desktop dan mendesain filter, kita memang tidak perlu khawatir tentang kerumitan. Namun, pada platform tertentu dan dalam situasi di mana desain perlu dilakukan secara quasi-realtime, kompleksitas komputasi adalah masalah, dan teknik desain suboptimal sederhana akan lebih disukai daripada teknik optimal yang jauh lebih kompleks. Sebagai contoh, saya pernah bekerja pada sistem untuk beamforming di mana filter (beamformer) perlu dirancang ulang dengan cepat, dan kompleksitas komputasi memang menjadi masalah.
Saya juga yakin bahwa dalam banyak situasi praktis kita tidak perlu khawatir tentang perbedaan antara desain optimal dan suboptimal. Ini menjadi lebih benar jika kita perlu menggunakan aritmatika titik tetap dengan koefisien terkuantisasi dan hasil operasi aritmatika terkuantisasi.
Masalah lainnya adalah stabilitas numerik dari metode desain filter yang optimal dan implementasinya. Saya telah menemukan beberapa kasus di mana algoritma Parks-McClellan (saya harus mengatakan, implementasi yang saya gunakan) tidak bertemu. Ini akan terjadi jika spesifikasi tidak masuk akal, tetapi juga bisa terjadi dengan spesifikasi yang sepenuhnya masuk akal. Hal yang sama berlaku untuk metode desain kuadrat terkecil di mana sistem persamaan linear perlu dipecahkan, yang dapat menjadi masalah yang tidak terkondisikan. Dalam keadaan ini, metode windowing tidak akan pernah mengecewakan Anda.
Sebuah komentar tentang perbandingan Anda antara metode jendela dan desain kuadrat terkecil: Saya tidak berpikir bahwa perbandingan ini menunjukkan keunggulan umum dari metode kuadrat terkecil dibandingkan metode windowing. Pertama, Anda tampaknya melihat atenuasi stop band, yang bukan merupakan tujuan desain untuk kedua metode ini. Metode windowing tidak optimal dalam arti apa pun, dan desain kuadrat terkecil meminimalkan energi stop band, dan sama sekali tidak peduli tentang ukuran riak stop band. Apa yang dapat dilihat adalah bahwa tepi pita pass dari desain jendela lebih besar dari pada salah satu dari desain kuadrat terkecil, sedangkan tepi stop band lebih kecil. Akibatnya, lebar pita transisi filter yang dirancang oleh windowing lebih kecil yang akan menghasilkan riak pita stop yang lebih tinggi. Perbedaan lebar pita transisi mungkin kecil, tetapi properti filter sangat sensitif terhadap parameter ini. Tidak ada keraguan bahwa filter kuadrat terkecil mengungguli filter lain ketika datang untuk menghentikan energi pita, tetapi itu tidak mudah dilihat sebagai ukuran riak. Dan pertanyaannya tetap jika perbedaan itu benar-benar akan membuat perbedaan dalam aplikasi praktis.
Izinkan saya menunjukkan kepada Anda bahwa perbandingan seperti itu sering kali dapat dibuat untuk terlihat seperti yang orang inginkan. Pada gambar di bawah ini saya membandingkan filter low pass optimal kuadrat terkecil yang dirancang dengan fungsi Matlab / Oktaf
firls.m
(biru) dengan filter low pass yang dirancang dengan metode jendela menggunakan jendela Kaiser (merah).Dari gambar tersebut, orang bahkan dapat menyimpulkan bahwa filter yang dirancang oleh windowing sedikit lebih baik daripada filter optimal kuadrat terkecil. Ini tentu saja tidak masuk akal karena kami bahkan tidak mendefinisikan "lebih baik", dan filter kuadrat terkecil harus memiliki kesalahan perkiraan kuadrat rata-rata yang lebih kecil. Namun, Anda tidak melihatnya secara langsung pada gambar. Bagaimanapun, ini hanya untuk mendukung klaim saya bahwa seseorang harus sangat berhati-hati dan jelas ketika melakukan perbandingan seperti itu.
Singkatnya, selain berguna untuk belajar bagi siswa DSP karena alasan didaktis semata, saya berpikir bahwa terlepas dari kemajuan teknologi sejak tahun 1970-an penggunaan metode windowing dapat dibenarkan dalam skenario praktis tertentu, dan saya tidak berpikir bahwa itu akan segera berubah.
sumber
Filter Windowed Sinc dapat dibuat secara adaptif dengan cepat pada prosesor yang hampir tidak cukup kuat untuk menjalankan filter FIR yang terkait. Windinc Sinc filter dapat dihasilkan dalam waktu terbatas.
Pembuatan beberapa filter Sinc berjendela sederhana dapat sepenuhnya dijelaskan (dan diperiksa untuk malware, dll.) Dalam beberapa baris kode , dibandingkan penggunaan beberapa kotak alat yang tidak jelas.
Latar belakang matematika yang kurang diperlukan diperlukan untuk menjelaskan filter Sinc berjendela, dibandingkan dengan yang diperlukan untuk kode generator filter PMcC dari awal.
Riak yang sama dalam respons frekuensi filter PMcC dapat menyebabkan artefak dalam domain waktu yang berbeda (dan mungkin kurang diinginkan) dibandingkan artefak yang dihasilkan oleh filter windowed sederhana.
sumber
f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)
yang juga berjalan di Octave. Penjelasannya adalah bahwa dengan filter yang sangat curam, riak-riak mungkin cukup teratur untuk menyerupai kosinus. Setara domain waktu dari domain frekuensi cosinus akan menjadi dua gema impulsif.Saya akan tunjukkan di sini satu manfaat dari desain berjendela dan trik untuk mendapatkan manfaat yang sama dari Parks – McClellan.
Untuk filter half-band, quarter-band dll. Windowing mempertahankan nol domain waktu dari fungsi sinc yang diskalakan, yang merupakan filter low-pass ideal prototipikal. Nol berakhir di koefisien, mengurangi biaya komputasi filter. Untuk filter setengah-band, desain berjendela memberikan filter dengan setiap koefisien genap 0 kecuali untuk koefisien tengah (yang juga dianggap genap):
Gambar 1. Fungsi Sinc yang diregangkan secara horizontal dengan faktor 2 adalah filter low-pass setengah-band prototipikal dengan gain 2, cocok untuk upampling dengan faktor 2.
Namun, Parks – McClellan / Remez dapat diakali untuk memberikan manfaat yang sama dengan mendesainnya menggunakan filter dengan jumlah genap genap dengan hanya band pass gain yang ditentukan. Koefisien yang diperoleh digunakan sebagai koefisien ganjil dari filter yang lebih panjang. Koefisien tengah filter yang lebih panjang disetel ke 1 dan koefisien bahkan lainnya ke 0. Filter ini memiliki gain 2 pada band pass dan riak simetris pada band pass dan stop. Dengan Python:
Gambar 2. Koefisien setengah-band filter dirancang secara tidak langsung menggunakan Python
scipy.signal.remez
.Gambar 3. Plot respons frekuensi magnitudo dari filter setengah-band yang dirancang secara tidak langsung menggunakan
scipy.signal.remez
.sumber