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 :

Lissage de courbes ou de parties de courbes


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien optique intrumentale et optronique
    Inscrit en
    Avril 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien optique intrumentale et optronique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 35
    Points : 35
    Points
    35
    Par défaut Lissage de courbes ou de parties de courbes
    Bonjour à tous.

    J'ai conçu une courbe par bouts, et qui contient donc des angles ; angles que je voudrais lisser sans connaitre aucune des fonctions permettant cette action.
    Je souhaiterais pouvoir lisser ma courbe sur des intervalles de points que je choisirais sans que cela affecte les autres points.

    La courbe ressemble à ceci :

    Nom : fonction_figure.JPG
Affichages : 1073
Taille : 83,1 Ko

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    x=-3:0.1:3;
    y=x.^2;
    yoff=y(end);
    y=y-yoff;
     
    xracb1=-5:0.1:-3.1;
    xracb2=3.1:0.1:5;
     
    x=[xracb1 x xracb2];
    y=[zeros(1,length(xracb1)) y zeros(1,length(xracb2))];
     
    figure(1); plot(x,y); grid;

    Quelles sont les différentes options de lissage sur Matlab?
    J'ai entendu parlé des fonction "smooth" et "polyfit", comment se comportent-elles?
    Est-il, par exemple, possible de lisser la courbe sur seulement deux points de chaque côté des points qui constituent les angles (soit sur 5 points pour chaque angle)?
    Quelles seront alors les conséquences sur le reste de ma fonction?

    Merci pour vos réponses.
    Images attachées Images attachées  

  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

    il y a plusieurs possibilités

    mais polyfit ne conviendra pas à ton problème (aucun polynome ne collera avec ta courbe)

    smooth nécessite la Curve Fitting Toolbox. l'as tu ?
    moi je ne l'ai pas donc je pourrai pas t'aider la dessus

    tu peux aussi faire un lissage par filtrage avec un filtre "moyenne glissante" par exemple

    ou alors (et c'est ce que je ferais) tu créé manuellement quelques points autour de tes angles et ensuite tu créé d'autres points automatiquement par interpolation cubique (interp1 avec l'option PCHIP)

    Fabien

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien optique intrumentale et optronique
    Inscrit en
    Avril 2015
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien optique intrumentale et optronique
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 35
    Points : 35
    Points
    35
    Par défaut
    Bonjour et merci pour votre réponse.

    J'ai la fonction smooth mais elle génère finalement un décalage du minimum de la courbe vers la haut et certains points anguleux ne sont pas lissés comme je le voudrais.

    Comme on le voit sur les images suivantes, l'angle 1 est bien lissé (sur 5 points, comme je l'imaginais) mais les angles 2 et 3 ne le sont pas et j'imaginais plutôt leur lissage plus doux vers l'intérieur de l'angle formé par la courbe, c'est à dire toujours la courbe rouge sous la courbe bleu pour l'angle 2 et au dessus pour l'angle 3 mais avec des angles plus doux comme pour la premier.

    Est-ce que le méthode de l'interpolation cubique me permettrait d'y remédier ? puis-je la customiser?
    Quand vous parlez de rajouter des points autour de mes angles, parlez vous d'augmenter la fréquence spatiale de définition de ma courbe dans leurs environs?

    Je précise que la fonction prise ici n'est pas la même que précédemment, je lui ai appliqué un offset en x (soit y=(x-offset)^2) mais la méthode concaténation avec les autres bouts de courbe est resté la même.

    la courbe complète:
    Nom : smooth1.jpg
Affichages : 915
Taille : 95,1 Ko

    l'angle 1
    Nom : smoothangle1.jpg
Affichages : 830
Taille : 90,6 Ko

    l'angle 2
    Nom : smoothangle2.jpg
Affichages : 801
Taille : 80,6 Ko

    l'angle 3
    Nom : smoothangle3.jpg
Affichages : 818
Taille : 71,8 Ko

    le minimum
    Nom : smoothminimum.jpg
Affichages : 898
Taille : 108,4 Ko

    Pour plus d'éclaircissements sur ce que je cherche à faire, je souhaite construire des courbes, soit par addition soit par "superposition" (ou coupure), d'une courbe principale (large) et de courbes secondaire (plus étroites). Les courbes présentées ici sont des courbes secondaires à additionner ou à superposer...

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/09/2014, 23h08
  2. Coloration d'une partie de courbe
    Par Flarnaud dans le forum Signal
    Réponses: 1
    Dernier message: 18/02/2011, 07h33
  3. [Fortran 77][Débutant] Méthode de lissage de courbe
    Par fp_81-69 dans le forum Fortran
    Réponses: 9
    Dernier message: 29/06/2007, 15h17
  4. Réponses: 4
    Dernier message: 24/11/2005, 19h51
  5. [débutant] Même partie de page dans chaque page
    Par ShinJava dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 10/12/2004, 15h02

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