Fichier:Savitzky-golay pic gaussien dissymetrique bruite.svg

Fichier d’origine(Fichier SVG, nominalement de 487 × 438 pixels, taille : 52 kio)

Ce fichier et sa description proviennent de Wikimedia Commons.

Description

Description
English: Smoothing, derivation and second derivation of a noisy assymetric peak using the Savitzky-Golay algorithm (3rd degree polynomial, 41 points window).

Made with Scilab, modified with Inkscape.

Estimated values:

  • position of the top (minimum of the second derivative): x = −0.03;
  • value of the smoothed curve at this position: y = 9.7026418;
  • position of the left and right inflection points: −0.84 and 0.45.
Français : Lissage, dérivation et dérivation seconde d'un pic dissymétrique bruité, avec l'algorithme de Savitzky-Golay (polynôme de degré 3, fenêtre de 41 points).

Obtenu avec Scilab, modifié avec Inkscape.

Valeurs estimées :

  • position du sommet (minimum de la dérivée seconde): x = −0.03;
  • valeur de la courbe lissée à cette position: y = 9.7026418;
  • position des points d'inflexion gauche et droite : −0.84 and 0.45.
Date
Source Travail personnel
Auteur Cdang

Scilab source

Génération du fichier de données pic_gauss_dissym_bruite.txt : voir File:Regression pic gaussien dissymetrique bruite.svg.

Traitement des données :

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

clear;
clf;
chdir('monchemin/')

// paramètres du lissage :
largeur = 41; // 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);
//        Yfoo=poldegtrois(Aopt,intervX);
//        subplot(3,1,1);plot(intervX, Yfoo, 'r')
        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('pic_gauss_dissym_bruite.txt', -1, 2)
Xinit = donnees(:,1);
Yinit = donnees(:,2);

//subplot(3,1,1)
//plot(Xdef, Ydef, "b")

// Traitement des données

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

// affichage

decal = floor(largeur/2);
nbpts=size(Xinit,'*');
X1=Xinit((decal+1):(nbpts-decal));
X2=Xinit((2*decal+1):(nbpts-2*decal));
Y1=Yprime((decal+1):(nbpts-decal));
Y2=Yseconde((2*decal+1):(nbpts-2*decal));

[foo, pinfg] = max(Yprime); // position du point d'inflexion à gauche
[foo, pinfd] = min(Yprime); // " droite
[foo, pos] = min(Yseconde); // position du sommet
ymax = Yliss(pos); // valeur du maximum
print(%io(2), Xinit(pinfg))
print(%io(2), Xinit(pinfd))
print(%io(2), Xinit(pos))
print(%io(2), ymax)

subplot(3,1,1)
plot(Xinit, Yinit, "b")
plot(Xinit, Yliss, "r")

subplot(3,1,2)
plot(X1, Y1, "b")

subplot(3,1,3)
plot(X2, Y2, "b")

Conditions d’utilisation

Moi, en tant que détenteur des droits d’auteur sur cette œuvre, je la publie sous les licences suivantes :
GNU head Vous avez la permission de copier, distribuer et modifier ce document selon les termes de la GNU Free Documentation License version 1.2 ou toute version ultérieure publiée par la Free Software Foundation, sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture. Un exemplaire de la licence est inclus dans la section intitulée GNU Free Documentation License.
w:fr:Creative Commons
paternité partage à l’identique
Ce fichier est sous licence Creative Commons Attribution – Partage dans les Mêmes Conditions 3.0 (non transposée), 2.5 Générique, 2.0 Générique et 1.0 Générique.
Vous êtes libre :
  • de partager – de copier, distribuer et transmettre cette œuvre
  • d’adapter – de modifier cette œuvre
Sous les conditions suivantes :
  • paternité – Vous devez donner les informations appropriées concernant l'auteur, fournir un lien vers la licence et indiquer si des modifications ont été faites. Vous pouvez faire cela par tout moyen raisonnable, mais en aucune façon suggérant que l’auteur vous soutient ou approuve l’utilisation que vous en faites.
  • partage à l’identique – Si vous modifiez, transformez, ou vous basez sur cette œuvre, vous devez distribuer votre contribution sous la même licence ou une licence compatible avec celle de l’original.
Vous pouvez choisir l’une de ces licences.

Légendes

Ajoutez en une ligne la description de ce que représente ce fichier

Éléments décrits dans ce fichier

dépeint

Historique du fichier

Cliquer sur une date et heure pour voir le fichier tel qu'il était à ce moment-là.

Date et heureVignetteDimensionsUtilisateurCommentaire
actuel5 décembre 2012 à 12:08Vignette pour la version du 5 décembre 2012 à 12:08487 × 438 (52 kio)Cdang{{Information |Description ={{en|1=Smoothing, derivation and second derivation of a noisy assymetric peak using the Savitzky-Golay algorithm (3<sup>rd</sup> degree polynomial, 41 points window). Made with Scilab, modified with Inkscape.}} {{fr|1=Li...

La page suivante utilise ce fichier :

Métadonnées