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 :

recherche croisée dans 2 matrices [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 47
    Par défaut recherche croisée dans 2 matrices
    bonjour a tous et merci a ceux qui vont me repondre
    je suis un grand debutant sur matlab aussi soyez indulgent si mon explication n'est pas trés claire.

    J'ai 2 matrices avec dans une :
    -date heure (convertie avec datenum) -latitude - longitude

    dans l'autre:
    -date heure (convertie avec datenum) -distance -azimut

    le but de ma question est comment faire pour avoir une troisième matrice indiquant
    -date heure -latitude -longitude -distance -azimut , ceci avec comme point commun date heure.

    exemple

    a=
    1200 44 32
    1205 45 33
    1210 46 34

    b=
    1190 440 350
    1205 450 350
    1220 460 350


    le résultat doit être
    c=
    1205 45 33 450 350


    pour ne rien simplifier les matrices sont de longueur différentes

    n’hésitez pas a me poser des questions si je n'ai pas été clair
    merci de vos réponses
    cyril

  2. #2
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    une solution rapide, pas forcément optimisée :
    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
    a=[
    1200 44 32
    1205 45 33
    1210 46 34]
     
    b=[
    1190 440 350
    1205 450 350
    1220 460 350]
     
    % c= 1205 45 33 450 350
    j=1;
    for i=1:size(a)
        index=find(b==a(i,1));
        if ~isempty(index)
            c(j,:)=[a(i ,:) b(index,2:end)];
            j=j+1;
        end
    end

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 47
    Par défaut
    merci soft001 de ta réponse , ta solution fonctionne partiellement , mais pas sur l'ensemble de la matrice
    je te mets en pièce jointe mes fichiers txt avec mes infos ce sera certainement plus explicite pour toi
    rdrtest.txtgpstest.txt

    gpstest et rdrtest sont les 2 fichiers à croiser

    voici ma routine , y'a certainement beaucoup mieux a faire notamment suer la lecture des fichiers
    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
    28
    29
    close all
    clear all
     
     
     
    fichier_gps='D:\analyse \work\gpstest.txt';
    [Lat_gps,Long_gps,Alt_gps,annee_gps,mois_gps,jour_gps,heure_gps,min_gps,sec_gps]=...
    textread(fichier_gps,'%f %f %f %4d : %2d : %2d %*1c %2d : %2d : %2d %*1c %*[^\n]','headerlines',0);
     
    fichier_rdr='D:\analyse \work\rdrtest.txt';
    [jour_rdr,mois_rdr,annee_rdr,heure_rdr,min_rdr,sec_rdr,typ,dist_rdr,Az_rdr]=...
    textread(fichier_rdr,'%2d:%2d:%4d %2d:%2d:%2d %1c %f %f %*[^\n]','headerlines',0);
     
    t_gps=datenum(annee_gps,mois_gps,jour_gps,heure_gps,min_gps,sec_gps);
     
    t_rdr=datenum(annee_rdr,mois_rdr,jour_rdr,heure_rdr,min_rdr,sec_rdr);
     
    gps=[t_gps,Lat_gps,Long_gps];
    rdr=[t_rdr,dist_rdr,Az_rdr];
     
     
    j=1;
    for i=1:size(gps)
        index=find(rdr==gps(i,1));
        if ~isempty(index)
            c(j,:)=[gps(i,:) rdr(index,2:end)];
            j=j+1;
        end
    end
    voici l'erreur que me retourne matlab
    ??? Error using ==> horzcat
    CAT arguments dimensions are not consistent.
    
    Error in ==> essai at 26
            c(j,:)=[gps(i,:) rdr(index,2:end)];
    encore merci pour tout
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 47
    Par défaut
    je remonte car je ne trouve pas ou est l'erreur
    merci

  5. #5
    Membre émérite
    Avatar de soft001
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2008
    Messages
    409
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 409
    Par défaut
    Moi je ne trouve pas cette erreur, est ce que tu es sûr de contenu de ton fichier gpstest.txt ?

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 47
    Par défaut
    c'est bon ça fonctionne , il y avait bien une erreur dans mon fichier txt et ta routine de départ était correcte pas besoin de la modifier

    Pourrais tu stp me mettre un commentaire en face de chaque ligne que tu as écrite afin de m'expliquer a quoi elle correspond ?

    je ne sais pas si tu as pris le temps de lire les quelques lignes de ma routine mais peux tu me dire si il y a plus simple a faire pour lire mes fichiers txt

    encore merci pour le temps que tu m'as consacré

    cyril

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche dichotomique dans une matrice n*n
    Par kenzo75 dans le forum Algorithmes et structures de données
    Réponses: 27
    Dernier message: 27/03/2014, 18h42
  2. Recherche croisée dans tableaux
    Par RandoTr dans le forum Langage
    Réponses: 1
    Dernier message: 08/02/2012, 17h33
  3. [XL-2007] VBA Recherche titre dans une matrice
    Par vivi4561 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2011, 16h43
  4. [XL-2007] Recherche chronologique dans une matrice
    Par lebonprince dans le forum Excel
    Réponses: 20
    Dernier message: 10/05/2010, 18h18
  5. Réponses: 1
    Dernier message: 24/05/2007, 15h46

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