File:Lissage sg3 anim.gif

Lissage_sg3_anim.gif (610 × 460 pixels, file size: 68 KB, MIME type: image/gif, looped, 46 frames, 18 s)

Summary

Description
Français : Lissage de données bruitées par la méthode de Savitzky-Golay (polynôme de degré 3, fenêtre glissante de 9 points).
  • Courbe bleue : données brutes ;
  • rond bleu : point après lissage ;
  • courbe jaune : polynôme utilisé pour déterminer le point courant ;
  • courbe rouge : polynôme restreint à la fenêtre autour du point déterminé.
English: Smoothing of noisy data by the Savitzky-Golay method (3rd degree polynomial, 9 points wide sliding window).
  • Blue curve: raw data;
  • blue circle: point after smoothing;
  • yellow curve: polynomial used to determine the current point;
  • red curve: polynomial restricted to the sliding window around the current point.
Date
Source Own work
Author Cdang

Scilab source

// **********
// Constantes et initialisation
// **********

clear;
clf;
chdir("monchemin\")

// paramètres du lissage :
largeur = 9; // largeur de la fenêtre glissante (nb de pts)

// **********
// Fonctions
// **********

// polynôme de degré 3

function [y]=poldegtrois(A, x)
    // méthode de Horner
    y = ((A(1).*x + A(2)).*x + A(3)).*x + A(4);
endfunction

// régression avec le polynôme de degré 3

function [A]=regression(X, Y)
    // X et Y : vecteurs colonne de 9 valeurs ;
    // détermine le polynôme de degré 3
    // a*x^2 + b*x^2 + c*x + d
    // par régression sur (X, Y)
    XX = [X.^3; X.^2; X];
    [a, b, sigma] = reglin(XX, Y);
    A = [a, b];
endfunction

// lissage, détermination de la dérivée et de la dérivée seconde

function [y, yprime, yseconde] = savitzkygolay(X, Y, larg)
    // X, Y : nuage de points
    // larg : largeur de fenêtre
    n = size(X, "*");
    decalage = floor(larg/2);
    y = Y;
    yprime = zeros(Y);
    yseconde = yprime;
    for i=(decalage+1):(n-decalage)
        intervX = X((i-decalage):(i+decalage),1);
        intervY = Y((i-decalage):(i+decalage),1);
        Aopt = regression(intervX', intervY');
        x = X(i);
        y(i) = poldegtrois(Aopt,x);
// running plot and picture saving to be introduced
        yprime(i) = (3*Aopt(1)*x + 2*Aopt(2))*x + Aopt(3); // Horner
        yseconde(i) = 6*Aopt(1)*x + 2*Aopt(2);
    end
endfunction

// **********
// Programme principal
// **********

// lecture des données

donnees = read("mes_donnees.txt", -1, 2)
Xinit = donnees(:,1);
Yinit = donnees(:,2);

// Traitement des données

[Yliss, Yprime, Yseconde] = savitzkygolay(Xinit, Yinit, largeur);

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.

Captions

smoothing of noisy data

Items portrayed in this file

depicts

29 January 2013

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current09:57, 29 January 2013Thumbnail for version as of 09:57, 29 January 2013610 × 460 (68 KB)CdangUser created page with UploadWizard

The following page uses this file:

Global file usage

The following other wikis use this file:

Metadata