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 :

Problème avec une variable


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Mécatronique
    Inscrit en
    Mars 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Mécatronique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2019
    Messages : 49
    Par défaut Problème avec une variable
    Bonjour,

    Je cherche à afficher une colonne d'une matrice venant d'un fichier .txt que l'utilisateur charge.

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    file=input(' Nom de votre fichier?' , 's'); %% On entre le nom Vue_1.txt
    load (file);%% Charge le bon fichier puis renvoie le contenu du fichier: une matrice a*3
     
    filee=file(1:end-4); %% Me sert à enlever le '.txt' de mon nom de fichier d'ou filee=Vue_1
     
    A=[filee(:,1)]; %% J'aimerai qu'on me renvoie la premiere colonne du fichier Vue_1
    Cependant j'ai un problème cela ne me renvoie pas la première colonne de ma matrice mais A est sous la forme 1*1 avec pour valeur R.

    Comment récuperer dans A la première colonne de mon fichier chargé ?

    EDIT : Résolà l'aide de la fonction "Eval" merci matlab UK

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par lkr22 Voir le message
    file=input(' Nom de votre fichier?' , 's'); %% On entre le nom Vue_1.txt
    La fonction uigetfile est faite pour ça.

    Citation Envoyé par lkr22 Voir le message
    filee=file(1:end-4); %% Me sert à enlever le '.txt' de mon nom de fichier d'ou filee=Vue_1
    On peut aussi utiliser la fonction fileparts car l'extension peut contenir plus de 3 caractère (comme .html)

    Citation Envoyé par lkr22 Voir le message
    EDIT : Résolà l'aide de la fonction "Eval" merci matlab UK
    L'utilisation de la fonction eval est à proscrire.

    Montre nous quelques lignes du fichier txt et dis nous quelle colonne tu souhaites récupérer.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Mécatronique
    Inscrit en
    Mars 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Mécatronique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2019
    Messages : 49
    Par défaut
    Le fichier .txt est sous la forme d'une matrice a*3, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Vue_1=[1 2 3 ; 2 2 2; 3 3 3];
     
    Soit : Vue_1=[ 1 2 3
                    2 2 2
                   3 3 3 ]
    Je voudrais récuperer la première colonne, soit A(:,1)=[ 1;2;3]

    La fonction eval fonctionne très bien pourquoi est-elle à proscrire ?

    Concernant fileparts à priori mon utilisation sera uniquement sur des fichiers .txt mais je vais essayé de l'utiliser c'est plus propre.

    Et je vais également me renseigner sur uigetfile.

  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 317
    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 317
    Par défaut
    Dans un cas aussi simple, tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    A = dlmread('Vue_1.txt');
    A = A(:,1);
    Citation Envoyé par lkr22 Voir le message
    La fonction eval fonctionne très bien pourquoi est-elle à proscrire ?
    Voir la documentation : Alternatives to the eval Function

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur Mécatronique
    Inscrit en
    Mars 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur Mécatronique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2019
    Messages : 49
    Par défaut
    Le problème c'est que le nom du fichier est stocké dans une variable et qu'il est suscpetible de changer car c'est un "input", on peut utiliser des fichiers différents, d'ou le fait que je stockais le nom de mon fichier dans file mais lorsque je faisais A=[file(:,1)]; ca cherchait comme si il existait un fichier file or file est le nom de la variable qui contient le nom de mon fichier en valeur. Je ne sais pas si je me suis bien exprimé mais la fonction eval me sert donc à "extraire" le nom de mon fichier sous forme d'un nom et plus d'une variable.

    Voila ce que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    fichier=input('Nom du fichier?','s'); %% on tape : Vue_1.txt
    load(fichier); %% Ca charge mon fichier sous la forme d'une matrice a*3
     
    fichierr=fichier(1:end-4); %% Pour enlever le .txt
    eval(['fichierrr=',fichierr,';']); %% Transmets ma matrice dans la variable fichierrr
     
    A=[fichierrr(:,1)]; %% Ce qui fonctionne comme je le souhaite
    C'est un peu du bidouillage il y a forcément mieux mais ca fonctionne donc je ne sais pas trop

    Ensuite concernant uigetfile ca ouvre une fenetre pour séléctionner directement le fichier, je prefere que l'utilisateur l'entre après je garde l'idée on ne sait jamais

    Et fileparts je n'ai pas bien compris son utilisation

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par lkr22 Voir le message
    Le problème c'est que le nom du fichier est stocké dans une variable
    Ce n'est pas un problème, si ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    file = 'Vue_1.txt';
    A = dlmread(file);
    A = A(:,1);
    Citation Envoyé par lkr22 Voir le message
    C'est un peu du bidouillage il y a forcément mieux mais ca fonctionne donc je ne sais pas trop
    C'est justement le cœur du problème : c'est du bidouillage

    Citation Envoyé par lkr22 Voir le message
    Ensuite concernant uigetfile ca ouvre une fenetre pour séléctionner directement le fichier, je prefere que l'utilisateur l'entre après je garde l'idée on ne sait jamais
    Personnellement, je pense que tu fais un peu trop confiance à l'humain qui va saisir le nom du fichier…

    Citation Envoyé par lkr22 Voir le message
    Et fileparts je n'ai pas bien compris son utilisation
    Essaie ceci :
    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
    >> file = 'test.txt';
    >> [~, name, ext] = fileparts(file)
     
    name =
     
    test
     
     
    ext =
     
    .txt
     
    >> file = 'test.html';
    >> [~, name, ext] = fileparts(file)
     
    name =
     
    test
     
     
    ext =
     
    .html

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

Discussions similaires

  1. Problème avec une variable.
    Par ceroxono dans le forum Débuter
    Réponses: 3
    Dernier message: 06/06/2008, 14h19
  2. Problème avec une variable static
    Par Kevin12 dans le forum Général Java
    Réponses: 2
    Dernier message: 05/05/2008, 17h20
  3. problème avec une variable de type string
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/06/2007, 14h53
  4. [PHP-JS] problème avec une variable
    Par schats dans le forum Langage
    Réponses: 14
    Dernier message: 15/04/2007, 13h54
  5. [Javascript] problème avec une variable
    Par creatik dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/09/2006, 18h38

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