Bagaimana menemukan estimasi smooth dari derivatif dan derivatif kedua dari suatu sinyal?

10

Δtfsaya(tsaya=sayaΔt)saya=0,...,n-1f(t)f(t)

Pikiran pertama saya adalah memperkirakan turunannya berdasarkan perbedaan utama:

f(tsaya)=f(tsaya+1)-f(tsaya-1)2Δtf(tsaya)=f(tsaya+1)-2f(tsaya)+f(tsaya-1)(Δt)2

Namun sinyal mungkin memiliki banyak noise frekuensi tinggi yang dapat menyebabkan fluktuasi cepat pada dan .ff

Apa yang akan menjadi cara terbaik untuk menemukan estimasi "smoothed" dari dan ?ff

Andy
sumber

Jawaban:

6

Mungkin lebih tergantung pada data Anda. Hanya tahu, karena diferensiasi adalah operasi linier, jika Anda memilih filter linear apa pun untuk menghaluskan f 'dan f' ', itu sama dengan menghaluskan f menggunakan filter yang sama, lalu mengambil turunannya.

Bisakah Anda memposting beberapa gambar atau informasi lebih lanjut tentang sinyal yang ingin Anda bedakan? Mungkin yang Anda cari adalah semacam filter lowpass untuk menghaluskan sinyal. Beberapa opsi yang sangat sederhana termasuk filter rekursif kutub tunggal seperti , atau filter Hann, yang hanya menggabungkan sinyal dengan jendela Hann. Opsi filter Hann bagus karena ini fase linear. Jika Anda mengetahui rentang frekuensi yang Anda pedulikan, Anda bisa mendesain filter lowpass yang sesuai di domain frekuensi.y(n)=Sebuahx(n)+(1-Sebuah)y(n-1)

schnarf
sumber
Terima kasih schnarf! Jadi karena smoothing diikuti oleh diferensiasi sama dengan diferensiasi diikuti oleh smoothing; Saya mungkin juga menghaluskan sinyal asli dengan berbelit-belit misalnya jendela Hann? Bagaimana dengan pendekatan yang lebih sederhana menggunakan perbedaan hingga dalam rentang yang lebih besar: f '(t) ~ = [f (t + 10 * Dt) -f (t-10 * Dt)] / (20 * Dt), apakah ini memberikan estimasi yang cukup baik dari turunan yang dihaluskan?
Andy
4

The Savitzky-Golay Filter menyediakan perkiraan kelancaran sinyal dan beberapa turunan pertama.

Implementasi MATLAB dapat ditemukan di sini .

eglaser
sumber