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 :

Variable en fonction du nom de fichier


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 10
    Points
    10
    Par défaut Variable en fonction du nom de fichier
    Dans mon code j'ai une variable "e" qui est calculée pour chaque fichier *.XYZ qui est loadé, donc le calcul est une boucle qui se répète à chaque fichier XYZ.
    J'aimerais appliquer une correction à la variable "e" (ajouter une valeur numérique. exemple: +0.33).
    Mais cette correction (que l'on va nommer "R") dépend du nom du fichier qui est loadé (donc R varie selon le fichier chargé au départ de la boucle).

    Je voudrais associer une valeur à "R" en fonction de si il y a, oui ou non, tel bou de texte dans le nom du fichier. C'est en fait une condition classique "if"...
    Maintenant je voudrais savoir si c'est possible avec matlab d'analyser (scan) le nom du fichier et de déceler les mots clés (parmi les mots clés préalablement définis dans les conditions if) permettant de choisir quel valeur R il faut appliquer.

    exemple:
    P221_beton_brut_et32
    P32_beton_rect_34
    PE_pvc_th33
    P432_bois_233
    PIL44_simili_4344

    dans les conditions:
    si ...
    "str_actuel" contient "*brut*", alors "R" = 0.331
    "str_actuel" contient "*rectif*", alors "R" = 0.331
    "str_actuel" contient "*pvc*", alors "R" = 0.111
    "str_actuel" contient "*bois*", alors "R" = 0.031
    "str_actuel" contient "*simili*", alors "R" = 0.021
    "str_actuel" contient "*brut*", alors "R" = 0.551

    ensuite me restera plus qu'à corriger ma valeur "e" : "e_corrige" = "e" + R



    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
    30
    %boucle qui permet de traiter chaque fichier un après l'autre
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    for k = 1:length(str)
        str_actuel = str(k).name;
        str_eval = ['load ', str_actuel];
        eval(str_eval);
     
     
    %Calculs
    %%%%%%%%%
     
    P1 = data.plan(1,1:3);
    P2 = data.plan(1,4:6);
    P3 = data.plan(1,7:9);
     
    H = str_actuel;
     
        %   1)Calculer le vecteur normal:
           N = cross(P1-P2, P1-P3);
     
        %   2)Extraire les valeurs a, b et c
           a=N(1,1) ; b=N(1,2) ; c=N(1,3);
     
        %   3)Calculer la valeur d
           d = -(a*P1(1,1)+b*P1(1,2)+c*P1(1,3));
     
        %   4)Calculer la distance/ecart entre le point H et le plan P [P1,P2,P3]
           e = ((a*H(:,1)+b*H(:,2)+c*H(:,3)+d))/sqrt(a^2+b^2+c^2);
     
    end
    merci d'avance pour votre aide !

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pour faire ton test, tu peux utiliser la fonction REGEXP:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (regexp(str(k).name, 'bois'))
        disp('Fichier BOIS');
    elseif (regexp(str(k).name, 'pvc'))
        disp('Fichier PVC');
    ...
    end
    Sinon 2-3 commentaires sur ton code:
    - Il manque un END à ta boucle FOR
    - Pourquoi utiliser EVAL pour charger ton fichier et pourquoi charger 2 fois le fichier?

    Bonne journée,
    Duf

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2009
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    pardon, effectivement j'ai fait une petite bourde... c'est corrigé.
    et le end est pas présent, car c'est une partie du code, j'ai mis l'essentiel pour comprendre la question et manquait effectivement le end. merci pour les remarques !

    je connais pas la fonction disp. mais d'après l'aide en anglais, ça permet d'afficher la valeur d'une variable...

    mais je ne vois pas ce que cette fonction apporte à mon problème ... pourrais-tu m'expliquer ce que fait le code que tu m'as transmis ?

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    La fonction DISP c'était juste pour l'exemple, l'important c'est la fonction REGEXP
    qui permet d'utiliser les expressions régulières dans MATLAB (outil très puissant).
    Dans l'exemple, on utilise simplement pour tester si une chaine de caractère appartient à une autre.

    Sinon si tu préfères, tu peux regarder du côté de la fonction STRFIND.

Discussions similaires

  1. Variable en fonction du nom de page
    Par cartman1er dans le forum jQuery
    Réponses: 6
    Dernier message: 20/09/2012, 01h34
  2. Comparaison et tri en fonction du nom du fichier
    Par halloumiali dans le forum C
    Réponses: 9
    Dernier message: 20/03/2012, 18h16
  3. MAJ variable en fonction du nom de la colonne
    Par cvqremy dans le forum PL/SQL
    Réponses: 3
    Dernier message: 09/11/2010, 19h53
  4. Affichage image en fonction du nom de fichier
    Par fuema7 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2010, 13h21
  5. Réponses: 23
    Dernier message: 26/03/2006, 20h36

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