Devido à maneira como o filtro Savitzky-Golay é derivado (ou seja, como o polinômio local dos mínimos quadrados se encaixa), existe uma generalização natural para a amostragem não uniforme - é apenas muito mais caro em termos computacionais.
Filtros Savitzky-Golay em geral
Para o filtro padrão, a idéia é ajustar um polinômio a um conjunto local de amostras [usando mínimos quadrados] e substituir a amostra central pelo valor do polinômio no índice central (ou seja, 0). Isso significa que os coeficientes de filtro SG padrão podem ser gerados invertendo uma matriz de Vandermonde de indicações de amostra. Por exemplo, para gerar um ajuste parabólico local em cinco amostras (com indicações locais -2, -1,0,1,2), o sistema de equações de design A c = yy0…y4Ac=y seria o seguinte:
⎡⎣⎢⎢⎢⎢⎢⎢⎢- 20 0- 10 00 00 01 10 020 0- 21 1- 11 10 01 11 11 121 1- 22- 120 021 1222⎤⎦⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢c0 0c1 1c2⎤⎦⎥= ⎡⎣⎢⎢⎢⎢⎢⎢y0 0y1 1y2y3y4⎤⎦⎥⎥⎥⎥⎥⎥.
Acima, são os coeficientes desconhecidos do polinômio de mínimos quadrados c 0 + c 1 x + c 2 x 2 . Como o valor do polinômio em x = 0 é apenas c 0 , o cálculo do pseudo - inverso da matriz de projeto (ou seja, c = ( A T A ) - 1 A T y ) produzirá os coeficientes do filtro SG na linha superior. Nesse caso, eles seriamc0 0... c2c0 0+ c1 1x + c2x2x = 0c0 0c = ( ATA )- 1UMATy
⎡⎣⎢c0 0c1 1c2⎤⎦⎥= ⎡⎣⎢- 3- 7512- 4- 3170 0- 5124- 3- 375⎤⎦⎥⎡⎣⎢⎢⎢⎢⎢⎢y0 0y1 1y2y3y4⎤⎦⎥⎥⎥⎥⎥⎥.
Observe que, como a derivada de é c 1 + 2 c 2 x , a segunda linha da matriz (que avalia cc0 0+ c1 1x + c2x2c1 1+ 2 c2x ) será um filtro de derivada suavizada. O mesmo argumento se aplica a linhas sucessivas - elas fornecem derivadas de ordem superior suavizadas. Observe que dimensionei a matriz em 35 para que a primeira linha correspondesse aos coeficientes de suavização fornecidos na Wikipedia (acima). Os filtros derivativos diferem por outros fatores de escala.c1 1
Amostragem não uniforme
Quando as amostras são espaçadas uniformemente, os coeficientes do filtro são invariantes à conversão, portanto, o resultado é apenas um filtro FIR. Para amostras não uniformes, os coeficientes diferem com base no espaçamento local da amostra, portanto, a matriz de projeto precisará ser construída e invertida em cada amostra. Se os tempos de amostra não uniformes são , e construímos coordenadas locais t n com cada tempo de amostra central fixo em 0 , ou seja,xntn0 0
t- 2t- 1t0 0t1 1t2= x- 2- x0 0= x- 1- x0 0= x0 0- x0 0= x1 1- x0 0= x2- x0 0
cada matriz de design terá a seguinte forma:
A = ⎡⎣⎢⎢⎢⎢⎢⎢⎢t0 0- 2t0 0- 1t0 00 0t0 01 1t0 02t1 1- 2t1 1- 1t1 10 0t1 11 1t1 12t2- 2t2- 1t20 0t21 1t22⎤⎦⎥⎥⎥⎥⎥⎥⎥= ⎡⎣⎢⎢⎢⎢⎢⎢⎢1 11 11 11 11 1t- 2t- 10 0t1 1t2t2- 2t2- 10 0t21 1t22⎤⎦⎥⎥⎥⎥⎥⎥⎥.
A primeira linha do pseudoinverso de UMA pontilhado com os valores da amostra local produzirác0 0, o valor suavizado nessa amostra.