Karena diskusi dalam jawaban dan komentar yang ada terutama berfokus pada apa sebenarnya filter Savitzky-Golay (yang sangat berguna), saya akan mencoba menambahkan ke jawaban yang ada dengan memberikan beberapa informasi tentang bagaimana sebenarnya memilih filter smoothing, yang adalah, menurut pemahaman saya, tentang apa sebenarnya pertanyaan itu.
Pertama-tama, saya ingin mengulangi apa yang menjadi jelas dalam diskusi yang muncul dari jawaban lain: kategorisasi filter pemulusan dalam pertanyaan menjadi filter FIR / IIR linier dan time-invariant di satu sisi, dan Filter Savitzky-Golay di sisi lain menyesatkan. Filter Savitkzy-Golay hanyalah filter FIR standar yang dirancang sesuai dengan kriteria tertentu (perkiraan polinomial lokal). Jadi semua filter yang disebutkan dalam pertanyaan adalah filter LTI.
Pertanyaan yang tersisa adalah bagaimana memilih filter penghalusan. Jika kompleksitas komputasi dan / atau memori menjadi masalah, filter IIR mungkin lebih disukai daripada filter FIR, karena mereka biasanya akan mencapai penekanan kebisingan yang sebanding (yaitu, pelemahan stopband) dengan urutan filter yang jauh lebih rendah daripada filter FIR. Tetapi perhatikan bahwa jika pemrosesan waktu nyata diperlukan, satu kemungkinan kerugian dari filter IIR adalah bahwa mereka tidak dapat memiliki respons fase linier yang tepat. Jadi sinyal yang diinginkan akan mengalami beberapa distorsi fase. Untuk pemrosesan offline, distorsi fase dapat dihindari, bahkan dengan filter IIR, dengan menerapkan filter fase nol .
Terlepas dari pertimbangan yang dibahas dalam paragraf sebelumnya, itu terutama kriteria desain yang penting, tidak begitu banyak jika filter adalah FIR atau IIR, karena setiap filter IIR (stabil) dapat didekati dengan akurasi sewenang-wenang oleh filter FIR, dan Filter FIR dapat diperkirakan dengan filter IIR, meskipun yang terakhir bisa jauh lebih sulit. Kriteria desain yang tepat jelas tergantung pada sifat-sifat data dan kebisingan. Ketika datang untuk menghaluskan kita biasanya mengasumsikan data yang cukup berlebih (yaitu, halus). Jika noise memiliki komponen frekuensi tinggi, yaitu, jika ada sedikit tumpang tindih spektral antara data dan noise, kami ingin memaksimalkan atenuasi stop band, atau meminimalkan energi stop band, sambil mempertahankan sinyal yang diinginkan sebaik mungkin. Dalam hal ini kita dapat memilih filter FIR linier yang dirancang sesuai dengan kriteria minimum menggunakan algoritma Parks-McClellan. Kita juga bisa meminimalkan energi stop band (yaitu, meminimalkan daya noise di stop band) dengan memilih metode kuadrat terkecil. Gabungan antara dua kriteria (minimax dan kuadrat terkecil) dimungkinkan dengan memilih adesain squared least squared , yang meminimalkan energi stop band sambil membatasi kesalahan aproksimasi maksimum dalam pass band.
Jika spektrum noise secara signifikan tumpang tindih dengan spektrum sinyal, diperlukan pendekatan yang lebih hati-hati, dan pelemahan dengan kekerasan tidak akan bekerja dengan baik karena Anda meninggalkan terlalu banyak noise (dengan memilih frekuensi cut-off terlalu tinggi) atau Anda mendistorsi yang diinginkan sinyal terlalu banyak. Dalam hal ini filter Savitzky-Golay (SG) mungkin merupakan pilihan yang baik. Harga yang harus dibayar adalah pelemahan stopband biasa-biasa saja, tetapi satu keuntungan adalah bahwa beberapa sifat sinyal dipertahankan dengan sangat baik. Ini berkaitan dengan fakta bahwa filter SG memiliki respons pita lulus datar, yaitu,
dkH( ej ω)dωk|ω = 0= 0k = 1 , 2 , … , r(1)
di mana r adalah urutan polinomial yang mendekati dan H( ej ω) adalah respons frekuensi filter. Properti ( 1 ) menjamin bahwa momen r pertama dari sinyal input dipertahankan dalam output, yang berarti bahwa lebar dan tinggi puncak pada sinyal yang diinginkan terjaga dengan baik.
Tentu saja ada juga kompromi antara dua jenis filter smoothing yang dibahas di atas (atenuasi stopband tinggi dan SG). Kita dapat merancang filter FIR dengan tingkat kerataan tertentu pada ω = 0 dan menggunakan derajat kebebasan yang tersisa untuk memaksimalkan atenuasi stop band, atau meminimalkan energi stopband. Dalam kasus filter FIR, masalah desain yang dihasilkan cukup sederhana (dan cembung), dan rutin optimasi umum yang tersedia di beberapa paket perangkat lunak dapat digunakan untuk mendapatkan filter optimal untuk aplikasi yang diberikan.
Untuk yang tertarik dengan teori filter SG, referensi paling relevan yang dapat saya rekomendasikan adalah sebagai berikut:
CATATAN
jawaban saya sebelumnya (sebelum edit ini) menunjukkan filter Savitzky-Golay (SG) sebagai non-linear, data input yang bervariasi tergantung waktu adalah salah, karena salah interpretasi dini tentang bagaimana filter Savitzky-Golay (SG) menghitung outputnya sesuai dengan tautan wiki yang disediakan. Jadi sekarang saya memperbaikinya untuk kepentingan mereka yang juga akan melihat bagaimana filter SG dapat diterapkan oleh filter FIR-LTI. Terima kasih kepada @MattL. untuk koreksi dirinya, mata rantai besar yang dia berikan dan kesabaran yang dia miliki (yang tidak akan pernah saya tunjukkan) selama penyelidikan saya tentang masalah ini. Meskipun aku jujur lebih suka keberatan yang lebih verbal yang jelas tidak perlu. Harap perhatikan juga bahwa jawaban yang benar adalah yang lain, jawaban ini hanya untuk klarifikasi tambahan properti LTI dari filter SG.
Sekarang tidak mengherankan bahwa ketika seseorang (yang belum pernah menggunakan filter itu sebelumnya) menghadapi definisi filter SG sebagai polinomial LSE pesanan rendah untuk data yang diberikan, ia akan langsung melompat ke kesimpulan bahwa itu adalah data yang bergantung, nonlinier dan waktu (shift) filter adaptif yang bervariasi.
Namun, prosedur pemasangan polinomial ditafsirkan secara cerdik oleh SG sendiri, sehingga memungkinkan sepenuhnya penyaringan data, invarian waktu, penyaringan linier, sehingga menjadikan SG sebagai filter LTI-FIR tetap.
Di bawah ini adalah ringkasan terpendek dari tautan yang disediakan oleh MattL. Untuk setiap detail yang tampaknya hilang, silakan baca dokumen asli, atau minta klarifikasi. Tetapi saya tidak ingin memproduksi kembali seluruh dokumen di sini.
Sekarang bagi mereka yang terbiasa dengan prosedur polyfit LSE, saya hanya akan menulis persamaan matriks yang dihasilkan (dari tautan) yang mendefinisikan set koefisien optimal:
Sekarang mari kita bersandar sejenak dan membahas suatu hal di sini.
... Ini (Lfit polifit) dapat diulang pada setiap sampel input, setiap kali menghasilkan polinomial baru dan nilai baru dari urutan output y [n] ...
Jadi bagaimana kita mengatasi kejutan yang membingungkan ini? Dengan menafsirkan dan mendefinisikan output filter SG menjadi sebagai berikut:
KOMENTAR
KODE MATLAB / OCTVE
Outputnya adalah:
Semoga ini menjelaskan masalah ini.
sumber