Karena cara Savitzky-Golay filter diturunkan (yaitu sebagai cocok polinomial kuadrat-lokal), ada generalisasi alami untuk pengambilan sampel tidak seragam - itu jauh lebih mahal secara komputasi.
Savitzky-Golay Filter secara Umum
Untuk filter standar, idenya adalah untuk menyesuaikan polinomial ke set sampel lokal [menggunakan kuadrat terkecil], lalu ganti sampel pusat dengan nilai polinomial pada indeks tengah (yaitu pada 0). Itu berarti koefisien filter SG standar dapat dihasilkan dengan membalikkan matriks Vandermonde indeks sampel. Misalnya, untuk menghasilkan parabola fit lokal di lima sampel (dengan indicies lokal -2, -1,0,1,2), sistem persamaan desain A c = y akan menjadi sebagai berikut:y0…y4Ac=y
⎡⎣⎢⎢⎢⎢⎢⎢⎢−20−10001020−21−11011121−22−12021222⎤⎦⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢c0c1c2⎤⎦⎥=⎡⎣⎢⎢⎢⎢⎢⎢y0y1y2y3y4⎤⎦⎥⎥⎥⎥⎥⎥.
Dalam contoh di atas, adalah koefisien yang tidak diketahui dari polinomial kuadrat terkecil c 0 + c 1 x + c 2 x 2 . Karena nilai polinomial pada x = 0 hanya c 0 , menghitung pseudoinverse dari matriks desain (yaitu c = ( A T A ) - 1 A T y ) akan menghasilkan koefisien filter SG di baris atas. Dalam hal ini, mereka akan menjadic0…c2c0+c1x+c2x2x=0c0c=(ATA)−1ATy
⎡⎣⎢c0c1c2⎤⎦⎥=⎡⎣⎢−3−7512−4−3170−5124−3−375⎤⎦⎥⎡⎣⎢⎢⎢⎢⎢⎢y0y1y2y3y4⎤⎦⎥⎥⎥⎥⎥⎥.
Perhatikan bahwa karena turunan dari adalah c 1 + 2 c 2 x , baris kedua dari matriks (yang mengevaluasi c 1 ) akan menjadi filter derivatif yang dihaluskan. Argumen yang sama berlaku untuk baris berturut-turut - mereka memberikan turunan tingkat tinggi yang dihaluskan. Perhatikan bahwa saya menskalakan matriks dengan 35 sehingga baris pertama akan cocok dengan koefisien smoothing yang diberikan di Wikipedia (di atas). Filter derivatif masing-masing berbeda oleh faktor penskalaan lainnya.c0+c1x+c2x2c1+2c2xc1
Pengambilan sampel yang tidak seragam
Ketika sampel ditempatkan secara merata, koefisien filter adalah terjemahan-invarian, sehingga hasilnya hanyalah filter FIR. Untuk sampel tidak seragam, koefisien akan berbeda berdasarkan jarak sampel lokal, sehingga matriks desain perlu dibangun dan dibalik di setiap sampel. Jika waktu sampel tidak seragam adalah , dan kami membangun koordinat lokal t n dengan setiap waktu sampel pusat ditetapkan pada 0 , yaituxntn0
t−2t−1t0t1t2=x−2−x0=x−1−x0=x0−x0=x1−x0=x2−x0
maka setiap matriks desain akan berbentuk sebagai berikut:
A=⎡⎣⎢⎢⎢⎢⎢⎢⎢t0−2t0−1t00t01t02t1−2t1−1t10t11t12t2−2t2−1t20t21t22⎤⎦⎥⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢⎢11111t−2t−10t1t2t2−2t2−10t21t22⎤⎦⎥⎥⎥⎥⎥⎥⎥.
The first row of the pseudoinverse of A dotted with the local sample values will yield c0, the smoothed value at that sample.