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 :

Utiliser scanf() sur la fin du nom ?


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut Utiliser scanf() sur la fin du nom ?
    Bonjour à tous,

    Je sollicite votre aide car j'ai besoin de récuperer un chiffre dans ma list de char.

    Le format est le suivant :

    "Nom_de_la_variable1_1Y.txt"
    "Nom_de_la_variable1_5Y.txt"
    "Nom_de_la_variable2_1Y.txt"
    "Nom_de_la_variable2_5Y.txt"

    Je souhaite récupérer le chiffre devant le Y;
    Le problème est que le nom de la variable change de taille, donc je peux pas lui dire de récupérer tel caractère en partant du début.

    Cependant je voudrais lui dire de récupérer le 6ème caractère en partant de la fin.

    Est-ce possible ?

    Merci d'avance

  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,

    Un petit exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> temp = 'Hello_world'
     
    temp =
     
    Hello_world
     
    >> temp(end-3)
     
    ans =
     
    o
    je ne sais pas si ça fera ton bonheur
    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
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Merci beaucoup !

    Fonctionne parfaitement sauf quand j'ai 10 au lieu d'un seul chiffre ... ce qui est logique

  4. #4
    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
    Je ne pense pas que ça soit la solution la plus simple, mais tu peux éventuellement avec une boucle de condition vérifier si le caractère précédent est également un chiffre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if str2num(temp(end-7)) ~= []
    temp(end-7:end-6)
    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!

  5. #5
    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 : 52 882
    Points
    52 882
    Par défaut
    Une solution avec sscanf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    str = 'Nom_de_la_variable2_5Y.txt';
     
    X = sscanf(str, 'Nom_de_la_variable%*d_%dY.txt')
    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)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Ca tourne parfait merci

    Existe t'il une solution pour ce problème.

    Maintenant j'ai une liste de nom :

    Pour les Variable 5Y

    'Nom_de_la_variable1_5Y.txt
    'Nom_de_la_variable2_5Y.txt
    'Nom_de_la_variable3_5Y.txt

    et j'ai un vecteur de valeur qui correspond à chacun de ces noms de variables

    à côté j'ai Pour les variable 1Y

    'Nom_de_la_variable1_1Y.txt
    'Nom_de_la_variable2_1Y.txt
    'Nom_de_la_variable4_1Y.txt

    et j'aimerais créer un nouveau fichier nom avec (uniquement ceux en commun) :

    'Nom_de_la_variable1'
    'Nom_de_la_variable2'

    et 1 matrice 1Y et 5Y avec uniquement les variables en commun

    Je sais tous faire, sauf le plus important, comment trouver quand c'est commun ?

  7. #7
    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
    Je suppose que tu peux utiliser la fonction strcmp afin de comparer des chaînes de caractères.
    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!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Je test ça

    Je pense pas que ça passe, je bloque l'element de la première colonne et je le fait une boucle pour comparer avec tous les elements de la seconde ?

    Pas moyen d'aller plus vite ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si j'ai bien compris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> commun = intersect([1 2 3], [1 2 4])
     
    commun =
     
         1     2

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Je ne connaissais pas cette fonction, merci.

    Donc là je peux avoir la liste de nom commun.

    En fait moi j'ai

    [V1 V2 V3] et [V1 V2 V4] les nom des variables 1 à 4
    pour les vecteurs valeurs

    [1 2 3] et [1 4 5]

    ou chaque valeur de la ième colonne, correspond à la valeur associée au nom de la ième variable

    Je veux que ça me sorte :
    [V1 V2] les noms des variables communes
    et que chaque vecteur valeur, garde uniquement comme variable les valeurs pour lesquelles le nomde la variable est commun

    [1 2]
    et

    [1 4]

    Je ne sais pas si c'est plus clair merci

  11. #11
    Invité
    Invité(e)
    Par défaut
    Il me semble que l'on t'a fourni tous le éléments qui te permettent d'y arriver...
    Qu'as-tu essayé ? Quel est le soucis restant ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    en fait le problème vient du temps de calcul,

    j'utilise la fonction matlab que tu m'as donnée pour trouver les valeurs communes, ensuite je fais une boucle pour comparer ces valeurs commune avec la liste initiale et supprimer les lignes lorsque la valeur ne correspondant par avec strcmp mais c'est très long

  13. #13
    Invité
    Invité(e)
    Par défaut
    Tu devrais jeter un coup d’œil aux autres sorties de la fonction intersect

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 200
    Points : 46
    Points
    46
    Par défaut
    Ha ok je peux utiliser les identifiants
    merci beaucoup

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/06/2005, 23h56
  2. Réponses: 2
    Dernier message: 30/11/2004, 09h42
  3. Réponses: 7
    Dernier message: 07/09/2004, 14h16
  4. [Sybase] Utilisation indexes sur table Proxy
    Par MashiMaro dans le forum Sybase
    Réponses: 2
    Dernier message: 20/02/2004, 10h20
  5. [Utilisation Postgresql sur windows]
    Par xhercule dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/01/2004, 18h36

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