2010-08-26 6 views
6

Il filtro di livellamento Savitzky-Golay può essere utilizzato per calcolare i coefficienti in modo da calcolare i valori y livellati applicando i coefficienti ai valori adiacenti. La curva levigata sembra grande.come utilizzare il coefficiente liscio di Savitzky-Golay per calcolare i derivati ​​

In base ai documenti, i coefficienti possono anche essere utilizzati per calcolare i derivati ​​fino al quinto ordine. Il parametro di calcolo coefficienti ld dovrebbe essere impostato sull'ordine dei derivati. Per la prima derivata, l'impostazione appropriata è ld = 1, e il valore della derivata è la somma accumulata divisa per l'intervallo di campionamento h.

La mia domanda è: come utilizzare i coefficienti ottenuti per calcolare la somma accumulata? come viene calcolato il derivato? qualsiasi codice di esempio?

+0

La voce di Wikipedia su [Numerical smoothing and differentiation] (http://en.wikipedia.org/wiki/Numerical_smoothing_and_differentiation) mi ha aiutato a progettare un filtro S-G. –

+0

Il wiki non è chiaro riguardo le relazioni dei valori Y livellati con i valori di {a0, a1, a2, ..., ak}, specialmente sulla x in movimento. Quindi, per calcolare la prima derivata in (xi, yi), assumiamo sempre Z = 0? o usare la formula (a1 + 2 * a2 * z + 3 * a3 * z^2)/h? quali sono i valori di a1, a2 e a3 in relazione a yi o a Yi levigato? La formula dà una sorta di giusta forma, ma nella parte superiore appiattita della prima derivata, prendi un'onda sinusoidale come esempio, il valore nei punti appiattiti dovrebbe essere zero, come raggiungerlo? –

risposta

2

Per calcolare i derivati ​​utilizzando il filtro di livellamento Savitzky-Golay, il calcolo dei coefficienti polinomiali ha un parametro b, il valore b [derivativo] deve essere impostato su 1.0, l'array be verrà utilizzato nella chiamata di decomposizione LU.

La chiave per ottenere le derivate corrette è capire la formula polinomiale: Y = a0 + a1 * z + a2 * z^2 + ... + ak * z^k. I valori a0, a1, a2, ..., ak sono in realtà i valori livellati all'interno della finestra mobile, z = (x - x0)/h, per il punto centrale della finestra mobile, possiamo assumere z = 0 poiché x = x0.

Pertanto, nei calcoli derivati:

dY/dx = a1/h; and d2Y/dx2 = 2a2/h^2. 

Dove a1, a2 sono i valori livellati di y utilizzando i coefficienti calcolati sulle corrispondenti derivati.

Problemi correlati