Filtro Savitzky-Golay

Un filtro Savitzky-Golay es un filtro digital que se puede aplicar a un conjunto de puntos de datos digitales con el fin de suavizar los datos, es decir, aumentar la precisión de los datos sin distorsionarlos. la tendencia de la señal. Esto se logra, en un proceso conocido como convolución, ajustando subconjuntos sucesivos de puntos de datos adyacentes con un polinomio de bajo grado mediante el método de mínimos cuadrados lineales. Cuando los puntos de datos están igualmente espaciados, se puede encontrar una solución analítica a las ecuaciones de mínimos cuadrados, en forma de un único conjunto de "coeficientes de convolución" que se puede aplicar a todos los subconjuntos de datos, para dar estimaciones de la señal suavizada (o derivadas de la señal suavizada) en el punto central de cada subconjunto. El método, basado en procedimientos matemáticos establecidos, fue popularizado por Abraham Savitzky y Marcel J. E. Golay, quienes publicaron tablas de coeficientes de convolución para varios polinomios y tamaños de subconjuntos en 1964. Se han corregido algunos errores en las tablas. El método se ha ampliado para el tratamiento de datos bidimensionales y tridimensionales.
El artículo de Savitzky y Golay es uno de los más citados en la revista Analytical Chemistry y está clasificado por esa revista como uno de sus "10 artículos seminales" diciendo "se puede argumentar que los albores del instrumento analítico controlado por computadora se remontan a este artículo".
Aplicaciones
Los datos consisten en un conjunto de puntos {}xj{displaystyle {x_{j}}, Sí.j};j=1,...,n{displaystyle Y..., donde xj{displaystyle x_{j} es una variable independiente y Sí.j{displaystyle y_{j} es un valor observado. Se tratan con un conjunto de m{displaystyle m} coeficientes de convolución, Ci{displaystyle C_{i}, según la expresión
- Yj=. . i=1− − m2m− − 12CiSí.j+i,m+12≤ ≤ j≤ ≤ n− − m− − 12{displaystyle Y... _{i={tfrac {1-m}{2}} {tfrac} {m-1}{i},y_{j+i},qquad {fnMicroc {m+1}{2}leq jleq n-{frac {m-1}{2}}
Los coeficientes de convolución seleccionados se muestran en las tablas siguientes. Por ejemplo, para suavizar por un polinomio cuadrático de 5 puntos, m=5,i=− − 2,− − 1,0,1,2{displaystyle m=5,i=-2,-1,0,1,2} y el jth{displaystyle j^{th} punto de datos suavizado, Yj{displaystyle Y..., se da por
- Yj=135()− − 3Sí.j− − 2+12Sí.j− − 1+17Sí.j+12Sí.j+1− − 3Sí.j+2){displaystyle Y_{j}={frac {1}{35}(-3y_{j-2}+12y_{j-1}+17y_{j}+12y_{j+1}-3y_{j+2}},
¿Dónde? C− − 2=− − 3/35,C− − 1=12/35{displaystyle C_{-2}=-3/35,C_{-1}=12/35}, etc. Hay numerosas aplicaciones de suavizado, como evitar la propagación del ruido a través de una cadena de algoritmos, o a veces simplemente hacer que los datos parezcan menos ruidosos de lo que realmente es.
Las siguientes son aplicaciones de la diferenciación numérica de datos. Nota Al calcular el nth derivative, un factor de escalado adicional n!hn{displaystyle {frac {n} {h}}} {fn}} {fn}} {fn}} {fn}} {fn}} {fn}}} puede aplicarse a todos los puntos de datos calculados para obtener valores absolutos (ver expresiones para dnYdxn{displaystyle {fn} {fn} {fn}}} {fn}}} {fn}}} {fn}}}}} {fn}}}}}} {fn}}}} {fn}}}}}, abajo, para detalles).
- Ubicación de maxima y minima en curvas de datos experimentales. Esta fue la aplicación que primero motivó a Savitzky. El primer derivado de una función es cero a un máximo o mínimo. El diagrama muestra puntos de datos pertenecientes a una curva lorentziana sintética, con ruido añadido (rombos azules). Los datos se trazan en una escala de media anchura, en relación con el máximo máximo pico a cero. La curva lisa (línea roja) y 1a derivada (verde) se calcularon con filtros de 7 puntos de Savitzky–Golay cúbicos. La interpolación lineal de los primeros valores derivados en posiciones a ambos lados del cruce cero da la posición del máximo pico. 3er derivados también se pueden utilizar para este propósito.
- Ubicación de un punto final en una curva de titulación. Un punto final es un punto de inflexión donde el segundo derivado de la función es cero. La curva de titración para el ácido malónico ilustra el poder del método. El primer punto final a 4 ml apenas es visible, pero el segundo derivado permite que su valor sea fácilmente determinado por la interpolación lineal para encontrar el cruce cero.
- Base de referencia. En la química analítica a veces es necesario medir la altura de una banda de absorción contra una base curvada. Debido a que la curvatura de la base es mucho menos que la curvatura de la banda de absorción, el segundo derivado efectivamente aplana la base de referencia. Tres medidas de la altura derivada, que es proporcional a la altura de la banda de absorción, son las distancias "peak-to-valley" h1 y h2, y la altura de la base, h3.
- Mejora de resolución en espectroscopia. Las bandas en el segundo derivado de una curva espectroscópica son más estrechas que las bandas del espectro: han reducido la mitad de ancho. Esto permite que bandas parcialmente superpuestas sean "resolvedas" en picos separados (negativos). El diagrama ilustra cómo esto puede ser utilizado también para el análisis químico, utilizando la medición de distancias "peak-to-valley". En este caso los valles son una propiedad del segundo derivado de un Lorentzian. ()x- la posición del eje es relativa a la posición del máximo máximo pico en una escala de media ancho a media altura).
- Mejora de resolución con 4o derivado (puntos positivos). La minima es una propiedad del 4o derivado de un Lorentzian.
Promedio móvil
El "filtro de media móvil" es un ejemplo trivial de un filtro Savitzky-Golay que se usa comúnmente con datos de series temporales para suavizar las fluctuaciones a corto plazo y resaltar tendencias o ciclos a largo plazo. Cada subconjunto del conjunto de datos se ajusta con una línea recta horizontal en lugar de un polinomio de orden superior. Un filtro de media móvil no ponderada es el filtro de convolución más simple.
La media móvil se utiliza a menudo para un análisis técnico rápido de datos financieros, como precios de acciones, rentabilidades o volúmenes de negociación. También se utiliza en economía para examinar el producto interno bruto, el empleo u otras series de tiempo macroeconómicas.
No se incluyó en algunas tablas de coeficientes de convolución Savitzky-Golay ya que todos los valores de coeficiente son idénticos, con el valor 1m{fnMicroc} {1}{m}}.
Derivación de coeficientes de convolución
Cuando los puntos de datos están igualmente espaciados, se puede encontrar una solución analítica a las ecuaciones de mínimos cuadrados. Esta solución forma la base del método de convolución de suavizado y diferenciación numérica. Supongamos que los datos constan de un conjunto de n puntos (xj, yj) (j = 1,..., n), donde xj es una variable independiente y yj es un valor de referencia. Un polinomio se ajustará mediante mínimos cuadrados lineales a un conjunto de m (un número impar) puntos de datos adyacentes, cada uno de ellos separado por un intervalo h. En primer lugar se realiza un cambio de variable.
- z=x− − x̄ ̄ h{displaystyle z={x-{bar {x}} over h}
Donde x̄ ̄ {displaystyle {bar {x}}} es el valor del punto central. z toma los valores 1− − m2,⋯ ⋯ ,0,⋯ ⋯ ,m− − 12{displaystyle {tfrac {1-m}{2}},cdots0,cdots{tfrac {m-1}{2}} (por ejemplo. m = 5 → z = 2, 1, 0, 1, 2). El polinomio, de grado k se define como
- Y=a0+a1z+a2z2⋯ ⋯ +akzk.{displaystyle Y=a_{0}+a_{1}z+a_{2}cdots +a_{k}z^{k}
Los coeficientes a0, a1, etc. se obtienen resolviendo las ecuaciones normales (negrita a representa un vector, negrita J representa una matriz).
- a=()JTJ)− − 1JTSí.,{displaystyle {Mathbf} #=left({mathbf {J} {T} {fnMitbf {}}right)}{-{mthbf {fnK} {f} {fnMithbf} {f} {f}} {f}}
Donde J{displaystyle mathbf {J} es una matriz de Vandermonde, es decir i{displaystyle i}-la fila de J{displaystyle mathbf {J} valores 1,zi,zi2,... ... {displaystyle 1,z_{i},z_{i} {2},dots }.
Por ejemplo, para un polinomio cúbico ajustado a 5 puntos, z= −2, −1, 0, 1, 2 las ecuaciones normales se resuelven de la siguiente manera.
- J=()1− − 24− − 81− − 11− − 1100011111248){displaystyle mathbf {J} ={begin{pmatrix}1 tendría 2 repercusiones4 limitada-81 tendría 1 doble-11}}}}}}}}}}}}}}}} {displaystyle mathbf {} ={begin{pmatrix}={pmatrix}={begin{pmatrix}1
- JTJ=()m. . z. . z2. . z3. . z. . z2. . z3. . z4. . z2. . z3. . z4. . z5. . z3. . z4. . z5. . z6)=()m0. . z200. . z20. . z4. . z20. . z400. . z40. . z6)=()501000100341003400340130){displaystyle mathbf {J^{T}J} ={begin{pmatrix}m ventajasum z Pulsisum z^{2} limitsum z^{3}\\sum z z^{2} z^{3} z^{4}\sum z^{2} z^{3} z^{4} . z^{4}end{pmatrix}={begin{pmatrix}m ventaja0 z^{2} z^{2} z^{4}be\fncipa z^{2} z^{4} z^{4}={0}={0}={0}={0}={0}={0}}}}}}}}}}
Ahora, las ecuaciones normales se pueden factorizar en dos conjuntos separados de ecuaciones, reorganizando filas y columnas, con
- JTJincluso=()5101034)andJTJextraño.=()103434130){displaystyle mathbf {J^{T}J} _{text{even}={begin{pmatrix}5 implica1010 3\\\\end{pmatrix}quad mathrm {and} quad mathbf {J^{T} _{text{odd}={begin{pmatrix}10 334\34 330\\end{pmatrix}}}}}
Las expresiones para la inversa de cada una de estas matrices se pueden obtener usando la regla de Cramer.
- ()JTJ)incluso− − 1=170()34− − 10− − 105)and()JTJ)extraño.− − 1=1144()130− − 34− − 3410){fnMicrosoft} {fnMicrosoft} {fnMicrosoft}f}fnMicrosoft} {f} {f} {fnMicrosoft} {f} {fnMicrosoft} {f} {f}} {f}f}f}}fnMinMit}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}f}fnMitT}f}f}f}f}f}f}f}f}f}f}fnun}f}fnun}fnMinMinMinMinun}fnMinun}fnun}fnun}f}fnMinMinMinMinun}f}f}
Las ecuaciones normales se convierten en
- ()a0a2)j=170()34− − 10− − 105)()1111141014)()Sí.j− − 2Sí.j− − 1Sí.jSí.j+1Sí.j+2){c} {c} {c} {c} {c}c}}\c}\c}\c} {c} {c}} {c}} {c} {c}c}cc}c}} {c} {ccc}cc}cccc}cc}}c}}}c}c}c}c}}c}c}c}c}c}c}c}ccc}c}cc}c}c}c}c}c}c}c}ccccc}ccc}cccccccccc}ccccccccc}ccc}ccccc}cH
y
- ()a1a3)j=1144()130− − 34− − 3410)()− − 2− − 1012− − 8− − 1018)()Sí.j− − 2Sí.j− − 1Sí.jSí.j+1Sí.j+2){f} {f} {f}}m} {fn}}}m} {f}} {f}}} {pm} {c}} {pmcc}}c}c} {c}c} {c}c} {c}cc}c}c}c}c}cc}c}c}c}cc}c}c}c}c}c}c}c}c}c}cc}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}c}ccccc}c}c}c}c}c}cc}c}c}c}c}c}c}c}
Multiplicar y eliminar factores comunes,
- a0,j=135()− − 3Sí.j− − 2+12Sí.j− − 1+17Sí.j+12Sí.j+1− − 3Sí.j+2)a1,j=112()Sí.j− − 2− − 8Sí.j− − 1+8Sí.j+1− − Sí.j+2)a2,j=114()2Sí.j− − 2− − Sí.j− − 1− − 2Sí.j− − Sí.j+1+2Sí.j+2)a3,j=112()− − Sí.j− − 2+2Sí.j− − 1− − 2Sí.j+1+Sí.j+2){2} {2} {cH00}} {cH00}}} {cH00}} {cH0}} {ccH0}} {ccH0} {cH0}} {cH0}}
Los coeficientes de y en estas expresiones se conocen como coeficientes de convolución. Son elementos de la matriz.
- C=()JTJ)− − 1JT{displaystyle mathbf {C=(J^{T}J)^{-1}J^{T}
En general,
- ()C⊗ ⊗ Sí.)j =Yj=. . i=− − m− − 12m− − 12CiSí.j+i,m+12≤ ≤ j≤ ≤ n− − m− − 12{displaystyle (Cotimes y)_{j} - Sí. _{i=-{tfrac {m-1}{2} {fnMicroc} {fnMicroc} {m-1}{i},y_{j+i},qquad {fnMicroc {m+1}{2}leq jleq n-{frac {m-1}{2}}
En notación matricial, este ejemplo se escribe como
- ()Y3Y4Y5⋮ ⋮ )=135()− − 3121712− − 300⋯ ⋯ 0− − 3121712− − 30⋯ ⋯ 00− − 3121712− − 3⋯ ⋯ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ ⋱ ⋱ )()Sí.1Sí.2Sí.3Sí.4Sí.5Sí.6Sí.7⋮ ⋮ ){displaystyle {begin{pmatrix}Y_{3}Y_{4}\Y_{5}\\vdots {fnMicrosoft Sans {pmatrix}}}
En 1964 se publicaron tablas de coeficientes de convolución, calculados de la misma manera para m hasta 25, para el filtro de suavizado Savitzky-Golay, El valor del punto central, z = 0, se obtiene a partir de un único conjunto de coeficientes, a0 para suavizado, a1 para la primera derivada, etc. Las derivadas numéricas se obtienen diferenciando Y. Esto significa que las derivadas se calculan para la curva de datos suavizada. Para un polinomio cúbico
- Y=a0+a1z+a2z2+a3z3=a0 a z=0,x=x̄ ̄ dYdx=1h()a1+2a2z+3a3z2)=1ha1 a z=0,x=x̄ ̄ d2Ydx2=1h2()2a2+6a3z)=2h2a2 a z=0,x=x̄ ̄ d3Ydx3=6h3a3{displaystyle {begin{aligned}Y ventaja=a_{0}+a_{1}z+a_{2}z^{2}+a_{3}z^{3}=a_{0} {text{ at }z=0,x={bar} {x}\\fnMicroc {} {dx} {fnMicroc} {1}{a_{1}+2a_{2}z+3a_{3}z^{2}right)={frac {1}{h}a_{1}{text{ at }z=0,x={bar} {x}\\fnMicroc {fnK}} {fnK}} {fnK}}} {f}} {f}}} {f}}} {f}}}}} {f}}}} {f}}}}}}} {f}}}}}}} {f}}}}}}}}}}}}}} {f}}}}}}} {f}}}}}}}}}}}}}}}}}}}}}}}} {f}}}}}}}}}}} {f}}}}}}}}}}}}} {f}}}}}}}}}}}}}}}} {f}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} {1}{h^{2}} ({2a_{2}+6a_{3}z}right)={frac {2} {h^{2}}a_{2} {text{ at }z=0,x={bar {x}\\\fnK} {fnK}} {f}} {fnK}} {f}} {f}}} {fn}}}}}}}\\\\\\\\\\\\\\\fnK\fn}\\\\\\\\\\\\\\\\\\\fn}\\\\\fn}\\\\\\fn}\\\\\\\\\fn}\\fn}\\fn}\\\\\\\\\fn}fn}\\\\\\\\\\\\\fn {6}{h^{3}a_{3}end{aligned}}
En general, los polinomios de grado (0 y 1), (2 y 3), (4 y 5), etc. dan los mismos coeficientes para suavizado e incluso derivadas. Los polinomios de grado (1 y 2), (3 y 4), etc. dan los mismos coeficientes para derivadas impares.
Expresiones algebraicas
No es necesario utilizar siempre las tablas Savitzky-Golay. Las sumatorias en la matriz JTJ se pueden evaluar en forma cerrada,
- . . z=− − m− − 12m− − 12z2=m()m2− − 1)12. . z4=m()m2− − 1)()3m2− − 7)240. . z6=m()m2− − 1)()3m4− − 18m2+31)1344{displaystyle {begin{aligned}sum _{z=-{frac {m-1}{2}} {frac} {fnMicroc}} {fnMicroc}}} {f}}}} {fnMicroc} {m-1}{2}}z^{2} {m(m^{2}-1) over 12}\sum z^{4} {m={m(m^{2}-1)(3m^{2}-7)over 240}\sum z^{6} {m={2}-1)(3m^{4}-18m^{2}+31}+31)
para que se puedan derivar fórmulas algebraicas para los coeficientes de convolución. Las funciones adecuadas para usar con una curva que tiene un punto de inflexión son:
- Smoothing, polinomial degree 2,3: C0i=()3m2− − 7− − 20i2)/4m()m2− − 4)/3;1− − m2≤ ≤ i≤ ≤ m− − 12{displaystyle ¿Qué? {1-m}{2}leq ileq {frac} {m-1}{2}} (la gama de valores para i también se aplica a las expresiones siguientes)
- 1er derivado: grado polinomio 3,4 C1i=5()3m4− − 18m2+31)i− − 28()3m2− − 7)i3m()m2− − 1)()3m4− − 39m2+108)/15{displaystyle ¿Por qué? ({3m^{4}-39m^{2}+108}}}}
- 2o derivado: grado polinomio 2,3 C2i=12mi2− − m()m2− − 1)m2()m2− − 1)()m2− − 4)/30{displaystyle ¿Qué?
- 3o derivado: grado polinomio 3,4 C3i=− − ()3m2− − 7)i+20i3m()m2− − 1)()3m4− − 39m2+108)/420{displaystyle ¿Qué? ({3m^{4}-39m^{2}+108}right)/420}}
Las expresiones más simples que se pueden usar con curvas que no tienen un punto de inflexión son:
- Momento, grado polinomio 0,1 (media móvil): C0i=1m{displaystyle C_{0i={frac {1}{m}}
- 1er grado derivado, polinomio 1.2: C1i=im()m2− − 1)/12{displaystyle C_{1i}={frac {} {m(m^{2}-1)}}}
Se pueden obtener derivados superiores. Por ejemplo, se puede obtener una cuarta derivada realizando dos pasadas de una función de segunda derivada.
Uso de polinomios ortogonales
Una alternativa para ajustar m puntos de datos mediante un polinomio simple en la variable subsidiaria, z, es utilizar polinomios ortogonales.
- Y=b0P0()z)+b1P1()z)⋯ ⋯ +bkPk()z).{displaystyle Y=b_{0}P^{0}(z)+b_{1}P^{1}(z)cdots ¿Qué?
donde P0,..., Pk es un conjunto de polinomios mutuamente ortogonales de grado 0,..., k. Se proporcionan detalles completos sobre cómo obtener expresiones para los polinomios ortogonales y la relación entre los coeficientes b y a. por Invitado. Las expresiones para los coeficientes de convolución se obtienen fácilmente porque la matriz de ecuaciones normales, JTJ, es una matriz diagonal ya que el producto de dos polinomios ortogonales cualesquiera es cero en virtud de su ortogonalidad mutua. Por lo tanto, cada elemento distinto de cero de su inversa es simplemente el recíproco del elemento correspondiente en la matriz de la ecuación normal. El cálculo se simplifica aún más mediante el uso de recursividad para construir polinomios de Gram ortogonales. Todo el cálculo se puede codificar en unas pocas líneas de PASCAL, un lenguaje informático bien adaptado para cálculos que implican recursividad.
Tratamiento del primer y último punto
Los filtros Savitzky-Golay se utilizan más comúnmente para obtener el valor suavizado o derivado en el punto central, z = 0, utilizando un único conjunto de coeficientes de convolución. (m − 1)/2 puntos al inicio y al final de la serie no se pueden calcular mediante este proceso. Se pueden emplear varias estrategias para evitar este inconveniente.
- Los datos podrían ampliarse artificialmente añadiendo, en orden inverso, copias del primero (m −1)/2 puntos al principio y copias del último (m − 1)/2 puntos al final. Por ejemplo, con m = 5, se agregan dos puntos al inicio y final de los datos Sí.1,... Sí.n.
- Sí.3,Sí.2,Sí.1, ...Sí.n, Sí.n−1, Sí.n−2.
- Mirando de nuevo en el polinomio apropiado, es obvio que los datos se pueden calcular para todos los valores de z utilizando todos los conjuntos de coeficientes de convolución para un solo polinomio, a0..k.
- Para un polinomio cúbico
- Y=a0+a1z+a2z2+a3z3dYdx=1h()a1+2a2z+3a3z2)d2Ydx2=1h2()2a2+6a3z)d3Ydx3=6h3a3{displaystyle {begin{aligned}Y limit=a_{0}+a_{1}z+a_{2}z^{2}+a_{3}z^{3}\\{2} {} {dx} {fnMicroc} {1} {h} {a_{1}+2a_{2}z+3a_{3}z^{2}\{2}Y}{dx^{2}}}}} {={frac}} {f}} {f} {f}}}} {f}}} {f}}} {f}}}} {f}}}}}}}}}}}}} {f}}}}}} {f}}}}}}}}}}}} {f}}}}}}}}}}}}}} {f}}} {f} {f}}}} {f} {f}}}} {f}}}}}}} {f}}}}}}}}}}}}}}}}} {f} {f} {f}}} {f}}}}}} {f}}}}}}}}}}} {f}}}}}}} {1}{2}} {2a_{2}+6a_{3}z)\{frac {d^{3}Y}{dx^{3}}}} {={frac} {6}{h^{3}a_{3}end{aligned}}
- Los coeficientes de Convolution para los primeros y últimos puntos perdidos también se pueden obtener fácilmente. Esto también es equivalente a la fijación del primero (m + 1)/2 puntos con el mismo polinomio, y similarmente para los últimos puntos.
Ponderación de los datos
Está implícito en el tratamiento anterior que todos los puntos de datos reciben el mismo peso. Técnicamente, la función objetivo
- U=. . iwi()Yi− − Sí.i)2{displaystyle U=sum ¿Qué?
ser minimizado en el proceso de menos cuadras tiene pesos unitarios, wi = 1. Cuando los pesos no son todos iguales las ecuaciones normales se vuelven
- a=()JTWJ)− − 1JTWSí.Wi,iل ل 1{displaystyle mathbf {a} =left(mathbf {J^{T}W} mathbf {J} right)^{-1}mathbf {J^{T}W} mathbf {y} qquad W_{i,i}neq 1},
Si el mismo conjunto de pesos diagonales se utiliza para todos los subconjuntos de datos, W=diag()w1,w2,...,wm){displaystyle W={text{diag}(w_{1},w_{2},w_{m}}, una solución analítica a las ecuaciones normales se puede escribir. Por ejemplo, con un polinomio cuadrático,
- JTWJ=(). . wi . . wizi. . wizi2. . wizi. . wizi2. . wizi3. . wizi2. . wizi3. . wizi4){displaystyle mathbf {J^{T}WJ} ={begin{pmatrix}sum ♪♪♪♪♪♪♪♪♪♪ w_{i}z_{i} ¿Qué? w_{i}z_{i} {fnK} ¿Qué? {fnK} ################################################################################################################################################################################################################################################################ ¿Qué?
Se puede obtener una expresión explícita para la inversa de esta matriz utilizando la regla de Cramer. Luego se puede derivar un conjunto de coeficientes de convolución como
- C=()JTWJ)− − 1JTW.{displaystyle mathbf {C} =left(mathbf {J^{T}W} mathbf {J} right)^{-1}mathbf {J}W}}
Alternativamente, los coeficientes, C, podrían calcularse en una hoja de cálculo, empleando una rutina de inversión de matrices incorporada para obtener la inversa de la matriz de ecuaciones normales. Este conjunto de coeficientes, una vez calculado y almacenado, se puede utilizar con todos los cálculos en los que se aplique el mismo esquema de ponderación. Se necesita un conjunto diferente de coeficientes para cada esquema de ponderación diferente.
Se demostró que el filtro Savitzky-Golay se puede mejorar introduciendo pesos que disminuyen en los extremos del intervalo de ajuste.
Coeficientes de convolución bidimensional
El suavizado y la diferenciación bidimensionales también se pueden aplicar a tablas de valores de datos, como valores de intensidad en una imagen fotográfica compuesta por una cuadrícula rectangular de píxeles. Esta cuadrícula se denomina núcleo y los puntos de datos que constituyen el núcleo se denominan nodos. El truco consiste en transformar el núcleo rectangular en una sola fila mediante una simple ordenación de los índices de los nodos. Mientras que los coeficientes de filtro unidimensionales se encuentran ajustando un polinomio en la variable subsidiaria z a un conjunto de puntos de datos m, los coeficientes bidimensionales se encuentran ajustando un polinomio en las variables subsidiarias v y w a un conjunto de valores en los nodos del núcleo m × n. El siguiente ejemplo, para un polinomio bivariado de grado total 3, m = 7 y n = 5, ilustra el proceso, que es paralelo al proceso para el caso unidimensional, arriba.
- v=x− − x̄ ̄ h()x);w=Sí.− − Sí.̄ ̄ h()Sí.){displaystyle v={frac {x-{bar {x}{h(x)};w={frac} {y-{}} {y-}} {y-}} {y-}}} {y-}}} {y-}}} {y-}}}} {y-}}}} {y-}}}} {y-}}} {y-}}}} {y-}}}} {y-}}}}}} {y-}}}}} {y-}}}}}}}}}}}}}}}}}}}}}}}}} {y-}}}}}
- Y=a00+a10v+a01w+a20v2+a11vw+a02w2+a30v3+a21v2w+a12vw2+a03w3{displaystyle Y=a_{00}+a_{10}v+a_{01}w+a_{20}v^{2}+a_{11}vw+a_{02}w^{2}+a_{30}v^{3}+a_{21}v^{2}w+a_{12}vw^{2}+a_{03}w^{3}w}w}{3} {3} {3} {3}} {3} {3}}{3}}{3}}}{3}w}w}{2}}}}{2}}}}}}}}}}}}}}}}}}}}}}}w}{2}{2}{2} {2}{2}{2}{2}}}}}}}}{2}}}}}{2}{2}}}}}}}}}}}}}}}}}}}}}}}}}}}{2}{2}}}}}}}}}}}}}}
El núcleo rectangular de 35 valores de datos, d1 − d35
- vw
−3 −2 −1 0 1 2 3 −2 d1 d2 d3 d4 d5 d6 d7 −1 d8 d9 d10 d11 d12 d13 d14 0 d15 d16 d17 d18 d19 d20 d21 1 d22 d23 d24 d25 d26 d27 d28 2 d29 d30 d31 d32 d33 d34 d35
se convierte en un vector cuando las filas se colocan una tras otra.
- d =d1... d35)T
El jacobiano tiene 10 columnas, una para cada uno de los parámetros a00 − a03, y 35 filas, una para cada par de valores v y w. Cada fila tiene la forma
- Jfila=1vwv2vww2v3v2wvw2w3{displaystyle J_{text{row}=1quad vquad wquad V^{2}quad Vwquad w^{2}quad ¿Qué?
Los coeficientes de convolución se calculan como
- C=()JTJ)− − 1JT{displaystyle mathbf {C} =left(mathbf) {J} ^{T}mathbf {J}right)}mathbf {J}
La primera fila de C contiene 35 coeficientes de convolución, que se pueden multiplicar con los 35 valores de datos, respectivamente, para obtener el coeficiente polinomio a00{displaystyle a_{00}, que es el valor alisado en el nodo central del núcleo (es decir, en el nodo 18 de la tabla anterior). Del mismo modo, otras filas de C se puede multiplicar con los 35 valores para obtener otros coeficientes polinómicos, que, a su vez, se pueden utilizar para obtener valores suavizados y diferentes derivados parciales suavizados en diferentes nodos.
Nikitas y Pappa-Louisi demostraron que dependiendo del formato del polinomio utilizado, la calidad del suavizado puede variar significativamente. Recomiendan utilizar el polinomio de la forma.
- Y=. . i=0p. . j=0qaijviwj{displaystyle Y=sum - ¿Qué? ¿Qué?
ya que tales polinomios pueden lograr un buen suavizado tanto en las regiones centrales como en las cercanas fronteras de un núcleo, y por lo tanto pueden ser utilizados con confianza en suavizar tanto en los puntos de datos internos como en los puntos de datos casi límites de un dominio muestreado. Con el fin de evitar el mal acondicionamiento al resolver el problema de las menos cuadras, p c) m y q c) n. Para el software que calcula los coeficientes bidimensionales y para una base de datos de tales C's, ver la sección sobre coeficientes de convolución multidimensional, abajo.
Coeficientes de convolución multidimensional
La idea de coeficientes de convolución bidimensionales también se puede extender a dimensiones espaciales superiores, de manera sencilla, organizando la distribución multidimensional de los nodos del núcleo en una sola fila. Siguiendo el hallazgo antes mencionado de Nikitas y Pappa-Louisi en casos bidimensionales, se recomienda el uso de la siguiente forma del polinomio en casos multidimensionales:
- Y=. . i1=0p1. . i2=0p2⋯ ⋯ . . iD=0pD()ai1i2⋯ ⋯ iD× × u1i1u2i2⋯ ⋯ uDiD){displaystyle Y=sum - ¿Por qué? ¿Qué? sum ¿Por qué? i_{D}times ¿Qué? ¿Qué?
Donde D es la dimensión del espacio, a{displaystyle a}'s son los coeficientes polinomios, y u's son las coordenadas en las diferentes direcciones espaciales. Las expresiones algebraicas para derivados parciales de cualquier orden, ya sea mezclada o de otro modo, pueden derivarse fácilmente de la expresión anterior. Note que C depende de la forma en que los ganglios del núcleo se arreglan en una fila y de la forma en que se ordenan los diferentes términos de la forma ampliada del polinomio anterior, al preparar al Jacobiano.
Computación precisa C en casos multidimensionales se vuelve difícil, ya que la precisión de los números de puntos flotantes estándar disponibles en lenguajes de programación informática ya no son suficientes. La precisión insuficiente hace que los errores de truncación de punto flotante sean comparables a las magnitudes de algunos C elementos, que a su vez degrada gravemente su exactitud y la hace inútil. Chandra Shekhar ha presentado dos softwares de código abierto, Calculadora de Coeficientes Avanzados de Convolución (ACCC) y Calculadora de Coeficientes Precisos (PCCC), que manejan estos problemas de precisión adecuadamente. ACCC realiza el cálculo utilizando números de puntos flotantes, de manera iterativa. La precisión de los números de puntos flotantes aumenta gradualmente en cada iteración, utilizando GNU MPFR. Una vez obtenida C's en dos iteraciones consecutivas comienzan a tener los mismos dígitos significativos hasta una distancia pre-especificada, se supone que la convergencia ha llegado. Si la distancia es suficientemente grande, la computación produce una alta precisión C. PCCC emplea cálculos de números racionales, utilizando GNU Multiple Precision Arithmetic Library, y produce una completa precisión C, en el formato de número racional. Al final, estos números racionales se convierten en números de puntos flotantes, hasta un número predeterminado de dígitos significativos.
Se crea una base de datos de C que se calculan utilizando ACCC, para núcleos simétricos y polinomios tanto simétricos como asimétricos, en nodos del núcleo espaciados unitariamente, en los espacios de 1, 2, 3 y 4 dimensiones. disponible. Chandra Shekhar también ha presentado un marco matemático que describe el uso de C calculado en nodos del kernel con espacio unitario para realizar filtrado y diferenciaciones parciales (de varios órdenes) en nodos del kernel con espacios no uniformes, lo que permite el uso de C proporcionada en la base de datos antes mencionada. Aunque este método produce sólo resultados aproximados, son aceptables en la mayoría de las aplicaciones de ingeniería, siempre que la falta de uniformidad de los nodos del núcleo sea débil.
Algunas propiedades de la convolución
- La suma de los coeficientes de convolución para suavizar es igual a uno. La suma de coeficientes para derivados impares es cero.
- La suma de coeficientes de convolución cuadrados para suavizar es igual al valor del coeficiente central.
- Smoothing de una función deja el área bajo la función sin cambios.
- La evolución de una función simétrica con coeficientes incluso conductores conserva el centro de la simetría.
- Propiedades de filtros derivados.
Distorsión de señal y reducción de ruido
Es inevitable que la señal se distorsione en el proceso de convolución. Según la propiedad 3 anterior, cuando los datos que tienen un pico se suavizan, la altura del pico se reducirá y la mitad del ancho aumentará. Tanto el alcance de la distorsión como la mejora de la relación señal-ruido (S/N):
- disminución a medida que aumenta el grado de polinomia
- aumentar como el ancho, m de la función de la convolución aumenta

Por ejemplo, si el ruido en todos los puntos de datos no está correlacionado y tiene una desviación estándar constante, σ, la desviación estándar del ruido se reducirá mediante convolución con un m-función de suavizado de puntos para
- grado polinomio 0 o 1:1mσ σ {displaystyle {sqrt {1 over m}sigma} (media móvil)
- grado polinomio 2 ó 3: 3()3m2− − 7)4m()m2− − 4)σ σ {displaystyle {sqrt {3(3m^{2}-7)}{4m(m^{2}-4)}}sigma.
Estas funciones se muestran en el gráfico de la derecha. Por ejemplo, con una función lineal de 9 puntos (media móvil) se eliminan dos tercios del ruido y con una función de suavizado cuadrático/cúbico de 9 puntos sólo se elimina aproximadamente la mitad del ruido. La mayor parte del ruido restante es ruido de baja frecuencia (consulte Características de frecuencia de los filtros de convolución, a continuación).
Aunque la función de media móvil ofrece una mejor reducción de ruido, no es adecuada para suavizar datos que tienen una curvatura de m puntos. Una función de filtro cuadrático no es adecuada para obtener una derivada de una curva de datos con un punto de inflexión porque un polinomio cuadrático no lo tiene. La elección óptima del orden polinomial y el número de coeficientes de convolución será un compromiso entre reducción de ruido y distorsión.
Filtros multipaso
Una forma de mitigar la distorsión y mejorar la eliminación de ruido es utilizar un filtro de menor ancho y realizar más de una convolución con él. Para dos pasadas del mismo filtro esto equivale a una pasada de un filtro obtenido por convolución del filtro original consigo mismo. Por ejemplo, 2 pasadas del filtro con coeficientes (1/3, 1/3, 1/3) equivalen a 1 pasada del filtro con coeficientes (1/9, 2/9, 3/9, 2/9, 1/9).
La desventaja de multipasar es que el ancho de filtro equivalente para n{displaystyle n} pases de un m{displaystyle m}- función de punto n()m− − 1)+1{displaystyle n(m-1)+1} así que el multipassing está sujeto a mayores efectos finales. Sin embargo, el multipassing se ha utilizado para gran ventaja. Por ejemplo, unos 40–80 pases de datos con una relación de señal a ruido de sólo 5 dieron resultados útiles. Las fórmulas de reducción de ruido dadas anteriormente no se aplican porque la correlación entre puntos de datos calculados aumenta con cada paso.
Características de frecuencia de los filtros de convolución

Mapas de convolución a multiplicación en el codominio de Fourier. La transformada discreta de Fourier de un filtro de convolución es una función de valor real que se puede representar como
- FT()Silencio Silencio )=. . j=1− − m2m− − 12Cj# ()jSilencio Silencio ){displaystyle FT(theta)=sum _{j={tfrac {1-m}{2}} {tfrac} {m-1}{2}C_{j}cos(jtheta) }
θ va de 0 a 180 grados, después de lo cual la función simplemente se repite. La gráfica de una función de suavizado cuadrática/cúbica de 9 puntos es típica. En un ángulo muy bajo, el gráfico es casi plano, lo que significa que los componentes de baja frecuencia de los datos prácticamente no cambiarán durante la operación de suavizado. A medida que aumenta el ángulo, el valor disminuye, de modo que los componentes de frecuencia más alta se atenúan cada vez más. Esto muestra que el filtro de convolución puede describirse como un filtro de paso bajo: el ruido que se elimina es principalmente ruido de alta frecuencia y el ruido de baja frecuencia pasa a través del filtro. Algunos componentes del ruido de alta frecuencia se atenúan más que otros, como lo demuestran las ondulaciones en la transformada de Fourier en ángulos grandes. Esto puede dar lugar a pequeñas oscilaciones en los datos suavizados y a la inversión de fase, es decir, las oscilaciones de alta frecuencia en los datos se invierten mediante el filtrado de Savitzky-Golay.
Convolución y correlación
La convolución afecta la correlación entre errores en los datos. El efecto de la convolución se puede expresar como una transformación lineal.
- Yj =. . i=− − m− − 12m− − 12CiSí.j+i{displaystyle Y_{j}sum _{i=-{frac {m-1}{2}} {frac} {fnMicroc}} {fnMicroc}}} {f}}}} {fnMicroc} ¿Qué?
Por la ley de propagación del error, la matriz de varianza-covarianza de los datos, A se transformará en B según
- B=CACT{displaystyle mathbf {B} =mathbf {C} mathbf {A} mathbf {C} ^{T}
Para ver cómo se aplica esto en la práctica, considere el efecto de una media móvil de 3 puntos en los primeros tres puntos calculados, Y2 − Y4, suponiendo que los puntos de datos tienen la misma varianza y que no existe correlación entre ellos. A será una matriz identidad multiplicada por una constante, σ2, la varianza en cada punto.
- B=σ σ 29()111000111000111)()1000001000001000001000001)()100110111011001)=σ σ 29()321232123){displaystyle mathbf {0} {0} {0}} {0}}}}}}} {0}}}
En este caso los coeficientes de correlación,
- *** *** ij=BijBiiBjj, ()iل ل j){displaystyle rho ¿Qué? {B_{ij} {sqrt {B_{ii}}}}} (ineq j)}
entre los puntos calculados i y j será
- *** *** i,i+1=23=0.66,*** *** i,i+2=13=0.33{displaystyle rho _{i,i+1}={2 over 3}=0.66,,rho _{i,i+2}={1 over 3}=0.33}
En general, los valores calculados están correlacionados incluso cuando los valores observados no están correlacionados. La correlación se extiende sobre m − 1 puntos calculados a la vez.
Filtros multipaso
Para ilustrar el efecto del paso múltiple sobre el ruido y la correlación de un conjunto de datos, considere los efectos de un segundo paso de un filtro de media móvil de 3 puntos. Para el segundo pase
- CBCT=σ σ 281()111000111000111)()3210023200123000000000000)()100110111011001)=σ σ 281()19161041161916104101619161041016191614101619){0} {} {0}}}}
Después de dos pasadas, la desviación estándar del punto central ha disminuido a 1981σ σ =0.48σ σ {displaystyle {sqrt {}sigma =0,48sigma}, en comparación con 0,58σ para un pase. La reducción del ruido es un poco menos de lo que se conseguiría con un paso de un promedio móvil de 5 puntos que, en las mismas condiciones, daría lugar a que los puntos suavizados tengan la menor desviación estándar de 0.45σ.
La correlación ahora se extiende a lo largo de 4 puntos secuenciales con coeficientes de correlación
- *** *** i,i+1=1619=0.84,*** *** i,i+2=1019=0,53,*** *** i,i+3=419=0.21,*** *** i,i+4=119=0,05{displaystyle rho _{i,i+1}={16 over 19}=0.84,rho _{i,i+2}={10 over 19}=0.53,rho _{i,i+3}={4 over 19}=0.21,rho _{i,i+4}={1 over 19}=0.05}
La ventaja que se obtiene al realizar dos pasadas con la función de suavizado más estrecha es que introduce menos distorsión en los datos calculados.
Comparación con otros filtros y alternativas
En comparación con otros filtros de suavizado, p. Convolución con un filtrado de media móvil gaussiano o de múltiples pasos, los filtros Savitzky-Golay tienen una respuesta inicialmente más plana y un corte más agudo en el dominio de la frecuencia, especialmente para órdenes altos del polinomio de ajuste (ver características de frecuencia). Para datos con ancho de banda de señal limitado, esto significa que el filtrado Savitzky-Golay puede proporcionar una mejor relación señal-ruido que muchos otros filtros; por ejemplo, las alturas de los picos de los espectros se conservan mejor que con otros filtros con supresión de ruido similar. Las desventajas de los filtros Savitzky-Golay son una supresión comparativamente deficiente de algunas frecuencias altas (supresión de banda de parada deficiente) y artefactos al usar ajustes polinomiales para el primer y último punto.
Los métodos de suavizado alternativos que comparten las ventajas de los filtros Savitzky-Golay y mitigan al menos algunas de sus desventajas son los filtros Savitzky-Golay con pesos de ajuste elegidos adecuadamente, el suavizado Whittaker-Henderson (un método estrechamente relacionado con el suavizado de splines) y la convolución. con una función de sincronización de ventana.