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 :

droite passant entre 2 droites non parallèles


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut droite passant entre 2 droites non parallèles
    Bonjour à tous,

    J'ai un soucis sur Matlab, j'ai deux droites non parallèles (en bleu dans l'image) et je cherche à approximer une droite qui passerait au centre des deux première. Au sens des moindres carrés.
    J'ai choisi de mettre les abscisses et ordonnées des deux droites dans le même vecteur pour utiliser polyfit mais ça ne donne pas ce que je souhaite (droite verte)...

    Nom : erreurpolyfit.PNG
Affichages : 131
Taille : 8,3 Ko

    Avez vous une idée pour que ça fonctionne? Même sans utiliser polyfit...

    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    p=polyfit(B,A,1); %B contient les ordonnées des deux droites, celle de gauche puis celle de droite 
    %A contient les abscisses de la même manière (sans être classés par ordre croissant)
     
    c(1,:)=A;c(2,:)=(p(2)+B*p(1));
    plot(A,B, 'd', c(2,:), c(1,:));

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    J'entrevois une solution plus géométrique avec des équations de droites, coefficients directeurs, orthogonalité. Où bien si tu travailles sur des matrices, c'est à dire que tu peux donner une représentation matricielle de tes droites, tu peux jeter un oeil sur la fonction bwdist qui pourrait t'être fort utile je pense.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Je vais essayer géométriquement en utilisant l'angle entre les droites. L'approximation ne sera pas aux moindres carrés mais pour un premier test ça pourrait aller.

    Si quelqu'un a une idée pour améliorer le résultat je suis preneur

    Merci Gooby

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Serait-il possible de nous fournir un jeu de données dans un fichier mat (mis dans une archive zip ou rar) ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Voila mon jeu de données:

    donnees.zip

  6. #6
    Membre régulier Avatar de Alex3434
    Homme Profil pro
    Docteur / Ingénieur R&D
    Inscrit en
    Juillet 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Docteur / Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 66
    Points : 76
    Points
    76
    Par défaut
    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
    load('droite.mat')
    load('gauche.mat')
     
    y_droit = pixels_droit(:,2);
    x_droit = pixels_droit(:,1);
     
    y_gauche = pixels_gauche(:,2);
    x_gauche = pixels_gauche(:,1);
     
    milieu_y_droit = min(y_droit(:))+(max(y_droit(:)) - min(y_droit(:)))/2;
    milieu_x_droit = min(x_droit(:))+(max(x_droit(:)) - min(x_droit(:)))/2;
     
    milieu_y_gauche = min(y_gauche(:))+(max(y_gauche(:)) - min(y_gauche(:)))/2;
    milieu_x_gauche = min(x_gauche(:))+(max(x_gauche(:)) - min(x_gauche(:)))/2;
     
    figure
    plot(x_droit,y_droit,'g',x_gauche,y_gauche,'r')
    line([milieu_x_droit milieu_x_gauche],[milieu_x_gauche milieu_y_gauche]);
    Est ce que ça correspond au résultat que tu recherches ?

    Nom : droites.png
Affichages : 106
Taille : 4,3 Ko

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2015
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Salut Alex3434

    Non ce n'est pas ça. Plutot la droite rouge dans l'image ci dessous. (Je l'ai fait sur paint je n'y arrive toujours pas avec matlab)
    Nom : exemplepolyfit.png
Affichages : 136
Taille : 7,4 Ko

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Il y a plusieurs solution. Tu peux utiliser la fonction bwdist pour chercher les points les plus distants de tes deux droites, situés entre ces deux droites. (c'est la méthode qui me semble la plus facile à mettre en place ainsi que la plus fiable)

    Tu peux également calculer l'angle que forme ces deux droites et calculer sa bissectrice.

    Tu peux aussi prendre le segments que forment les deux extrémités inférieures de tes droites, et calculer la médiatrice. Cela va marcher dans ton cas mais attention aux autres cas.

    Il y a probablement une multitude d'autres méthodes, mais ces trois pistes devraient déjà te donner de quoi chercher si tu n'as pas d'autres idées.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  9. #9
    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

    ce que tu faisais étais pas trop mal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    figure
    plot(pixels_droit(:,1),pixels_droit(:,2))
    hold on
    plot(pixels_gauche(:,1),pixels_gauche(:,2))
    tout_pixel = [pixels_droit;pixels_gauche];
    p = polyfit(tout_pixel(:,2),tout_pixel(:,1),1)
    solution = polyval(p,tout_pixel(:,2))
    solution = [solution tout_pixel(:,2)];
    solution =sortrows(solution,1)
    plot(solution(:,1),solution(:,2))
    Fabien

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/06/2009, 16h34
  2. droits sur la clause de non concurrence
    Par mumu1403 dans le forum Contrat
    Réponses: 6
    Dernier message: 21/09/2008, 14h54
  3. Droite passant par le milieu d'un objet
    Par djsid dans le forum Traitement d'images
    Réponses: 11
    Dernier message: 21/06/2007, 10h54
  4. Intersection entre 1 droite et un parallélépipède rectangle
    Par mathieu_t dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 25/05/2005, 18h29
  5. Angle entre deux droites quelconques par produit scalaire
    Par cyber_N dans le forum Mathématiques
    Réponses: 6
    Dernier message: 22/05/2005, 20h46

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