IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Poids des points dans un fit polynomial


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut Poids des points dans un fit polynomial
    Bonjour,esque quand on donne un poids zero au points dans un intervalle de temps bien précis équivaut a ne pas prendre en considération ces points ( ils n'existent pas dans cet intervalle ) lors d'un fit linéaire donc la droite tracée dans cet intervalle n'est pas un fit linéaire ??Merci

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    Salut

    non, mais il suffit de les enlever de l'échantillon pour le fitting

    Fabien

  3. #3
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Merci Fabien, mais j'aurai quoi dans cet intervalle de temps si je les enlèvent ? normalement y'aura des points avec un poids zero et non des zéro donc normalement il y aura rien c'est ça?

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    heu oui je crois (si j'ai bien compris ce que tu écris ;-))

  5. #5
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Merci , mais je veux des explications convaincantes

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Comme je te l'ai indiqué dans l'autre discussion, des données de poids nuls et des données de valeurs nulles n'est pas la même chose.

    Dans le cas d'exclusions (poids nuls) les données sont ignorées (courbe rouge) dans l'autre cas les données sont prises (courbe bleue)

    Un exemple simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    clear
    xdata=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920,...
    1930 1940 1950 1960 1970 1980 1990]';
    ydata=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21]';
    % Zones de données de poids nuls
    raz1=[1:5];
    raz2=[11:15];
    Indice_nul=[raz1 raz2];
    outliers = excludedata(xdata, ydata, 'indices',Indice_nul);
    f=fit(xdata,ydata,'poly1','Exclude',outliers,'Robust','on')
    % Données avec des valeurs nulles aux mêmes rangs
    ydata=[0 0 0 0 0 6 7 8 9 10 0 0 0 0 0 16 17 18 19 20 21]';
    f1=fit(xdata,ydata,'poly1')
    h1=plot(f,xdata,ydata)
    set(h1,'Color','r','LineWidth',2)
    hold on
    h2=plot(f1,xdata,ydata)
    set(h2,'Color','b','LineWidth',2)
    grid
    Nom : Courbes_fits.jpg
Affichages : 289
Taille : 59,5 Ko

  7. #7
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Je vous remercie infiniment phryte pour votre réponse et explications ,mais quand on ignorent les données (poids nul) on fit quoi alors ?poids nul=données ignorées= non existence des données dans ce cas on fait un fit entre ces deux points seulements [0 et6] au départ et [10 et 16] a la fin (je suis confuse)
    Une dernière question es que on peut dire tout simplement que la droite rouge est un fit linéaire pour des données avec un poids nuls qui sont ignorées ?
    Merci beaucoup phyrte pour votre aide

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Citation Envoyé par SO-2016 Voir le message
    on peut dire tout simplement que la droite rouge est un fit linéaire pour des données avec un poids nuls qui sont ignorées ?
    OUI si tu utilises l'option 'Exclude'

  9. #9
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Merci phryte pour votre aide mais si je veux éliminer cette fois ci un seul intervalle [1:5] et fiter aprés , comment je dois procéder ?normalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    xdata=[1790 1800 1810 1820 1830 1840 1850 1860 1870 1880 1890 1900 1910 1920,...
    1930 1940 1950 1960 1970 1980 1990]';
    ydata=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21]';
     
    Indice_nul=[1 :5];
    outliers = excludedata(xdata, ydata, 'indices', Indice_nul);
    f=fit(xdata,ydata,'poly8','Exclude',outliers,'Robust','on');


    mais ça ne marche pas ,je ne comprends pas pourquoi?? help me please

  10. #10
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Poids des points dans un fit polynomial
    Bonjour,

    poly8 n'existe pas.

    'poly1' ou 'poly2'

    Fais : help fit

    Si tu veux l'ordre 8 il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    P = polyfit(xdata,ydata,8);
     V=polyval(P,xdata);
     plot(xdata,V)

  11. #11
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Bonsoir phryte mais je voulais donné un poids nul a un seul intervalle cette fois ci (pas deux) et fiter avec un polynôme de degré 8
    Comment utiliser outliers avec un fit de degré 8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Indice_nul=[1 :5];
    outliers = excludedata(xdata, ydata, 'indices', Indice_nul);
    P = polyfit(xdata,ydata,8,outliers);
     V=polyval(P,xdata);
     plot(xdata,V)
    mais ça ne marche pas?
    Sincèrement je ne saurai comment vous remercier phryte

  12. #12
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    polyfit n'accepte pas excludedata (hel polyfit)

    Avec fit tu as ces cas :

    FITTYPE DESCRIPTION
    'poly1' Linear polynomial curve
    'poly11' Linear polynomial surface
    'poly2' Quadratic polynomial curve
    'linearinterp' Piecewise linear interpolation
    'cubicinterp' Piecewise cubic interpolation
    'smoothingspline' Smoothing spline (curve)
    'lowess' Local linear regression (surface)




    Exemple avec l'ordre 3 (l'ordre 8 n'est pas forcément adapté au fit (==> message d'erreur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    clear
    xdata=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21]';
    ydata=10+2*randn(21,1);
    plot(xdata,ydata,'.r')
    hold on
    %Indice_nul=[1:5];
    %fit avec les échantillons de 1 à 5 en moins
    [P,S] = polyfit(xdata(6:end),ydata(6:end),3);
    V=polyval(P,xdata);
    plot(xdata,V,'k')
    grid
    axis([0 21 0 20])
    %fit avec tous les échantillons
    [P1,S1] = polyfit(xdata ,ydata ,3);
    V1=polyval(P1,xdata);
    plot(xdata,V1,'g')

  13. #13
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Merci phryte mais ce que je veux vraiment c'est de donner un poids nul a un intervalle bien précis (entre 10:12 mn) puis fiter avec un fit polynomial de degrés 7 ou 8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    % Data from data set "Moyenne vs. t with w":
    %     x= t:
    %     y = Moyenne:
    %     Weights = w:
    w=ones(8401,1);
    t=linspace(0,35,length(y));%le temps en minutes 
    y = Moyenne:% moyenne est une matrice (8401x1)
    donc
    1-je veux donner un poids zero aux données dans l'intervalle de temps (10:12) puis fiter le résultats avec un fit polynomial de degrés 7ou 8
    2- je donne cette fois ci un poids zero au 2 intervalle (10:12) et (24:29) puis fiter le résultat toujours avec un fit polynomial de degrés 7ou 8
    (sachant qu'il faut donner un poids =1 pour toutes les données sauf dans les intervalles (10:12 ou 24:29)ou il faut donner un poids zero)

  14. #14
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    avec un vecteur temps t en minute (de la même taille de xdata et ydata), il suffit d'écrire qqch comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [P,S] = polyfit(xdata(t>10 & t<=12),ydata(t>10 & t<=12),3);
    du coup les données comprises entre 10 et 12 mn ne sont pas transférées à la fonction polyfit
    ce qui reviens à un poids nul

  15. #15
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Merci le fab , mais ça ne marche pas avec un polynôme de degré 7 ou 8

  16. #16
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,
    Même solution que le fab .
    Dis-nous plutôt ce que tu cherches à faire. Il y a d'autres solutions que fi ou polyfit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    clear
    Nx=100;
    w=ones(Nx,1);
    t=linspace(0,35,Nx);%le temps en minutes 
    %y = Moyenne:% moyenne est une matrice (8401x1)
     y= 10*rand(1,Nx)+5;
     
    plot(t,y)
    axis([0 35 0 20])
    grid
    hold on
    [P,S] = polyfit(t,y,8);
    yf=polyval(P,t);
    plot(t,yf,'r')
    % Suppression des valeurs de 10 à 12
     ym=[y(1:9) y(13:end)];
     tm=[t(1:9) t(13:end)];
     [Pm,Sm] = polyfit(tm,ym,8);
    yfm=polyval(Pm,tm);
    plot(tm,yfm,'.k','MarkerSize',13)
    %
    % Solution avec fit et smoothingspline
    Indice_nul=[10:12];
    outliers = excludedata(t,y,'indices',Indice_nul);
    f=fit(t',y','smoothingspline','Exclude',outliers);
    hm=plot(f,t,y)
    set(hm,'Color','g','LineWidth',2)

  17. #17
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Bonjour phryte, j'ai un vecteur de 8401 lignes en fonction du temps (35mn) et je veux :

    1- donner un poids zero aux données de l' intervalle de temps (10:12) puis fiter le résultats avec un fit polynomial de degrés 7ou 8 (c'est important que le degré soit grand 5,6,7,8,9) et en même temps il faut que l'écart type soit minimum

    2- donner un poids zero aux 2 intervalles (10:12) et (24:29) puis fiter le résultat toujours avec un fit polynomial de degrés 7ou 8

    3- tracer le différence entre le signal d'origine et son fit pour l'utiliser après

    sachant qu'au départ il faut donner un poids =1 pour toutes les données( sauf pour les intervalles (10:12 ou 24:29)ou il faut donner un poids zero).

    Remarque importante :on veut pas supprimer les données entre (10:12) mais leurs donner un poids zéro pour ne pas les prendre en considération lorsqu'on fit

    Je tiens vraiment à vous remercier pour votre aide.Ci joint mes deux vecteurs: Moyenne.rar et t.rar

  18. #18
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut Poids des points dans un fit polynomial
    Bonjour,
    On a compris ce que tu veux faire, mais pas le pourquoi.
    Le lissage d'ordre élevé est délicat à utiliser et entraîne des erreurs.
    Ce que l'on t'a donné te suffit ?

  19. #19
    Membre à l'essai
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Octobre 2016
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2016
    Messages : 31
    Points : 10
    Points
    10
    Par défaut
    Mais phryte si je prends votre dernier code la taille du fit "yfm "est différente de la taille de" y "du coup je ne peux avoir leur différence(y-yfm) puisque vous avez supprimer toutes les données de l'intervalle (10:12) pour yfm( il faut juste leur donner un poids nul )

  20. #20
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Si tu veux rephaser les signaux il faut faire (en ignorant la zone 10,11,12 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    yfmm=[yfm(1:9) zeros(1,3) yfm(10:end)];
    tmm=[tm(1:9) zeros(1,3) tm(10:end)];
    et utiliser yfmm.

    Tout cela n'est peut-être pas très rigoureux !

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/02/2008, 17h05
  2. suppression des Points dans N°Tel
    Par LeXo dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2007, 15h29
  3. Relier des points dans une paintbox par une courbe
    Par Benjikos dans le forum Débuter
    Réponses: 4
    Dernier message: 19/08/2007, 13h06
  4. Problème d'ordre des points dans un Tchart
    Par pasqual dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2007, 12h04
  5. Réponses: 4
    Dernier message: 11/06/2004, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo