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 :

fonction si et nouvelle matrice [Débutant]


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut fonction si et nouvelle matrice
    Bonjour tout le monde,

    Je viens de commencer à utiliser matlab, dessiner des graphiques y ajouter une courbe de tendance sont des choses que je commence à bricoler.

    Par contre, je ne sais pas et je n'arrive pas à partir d'un fichier excel importer, créer un petit programme qui me permettrais de classer mes données dans des matrices différentes en fonction d'un nom de référence qui leur est attribué en quatrième colonne.

    Grosomodo, j'aimerai à l'aide d'une fonction "if" dire si lui a son texte qui commence par 1 alors inscrivais les lignes 1, 2 et 3 à la suite de la matrice 1.

    J'espère ne pas être trop abstrais.

    Merci d'avance !

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    ce sont des chaines de caractères dans ta 4eme colonne? Si oui,
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    oui c'est un code d'un chiffre, ensuite de deux lettres et pour finir un dernier chiffre par exemple : ->1aa1<-
    Je vais regarder ce que tu proposes, je te tiens au courant
    merci beaucoup

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut suite possible?
    Yes ta réponse m'a aidé pour créer une matrice. Enfaite j'importe mes données et j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=strncmp(textdata(:,4), '1', 1);
    Là j'ai une matrice qui identifie si oui ou non le premiers caractère du code est '1' . Mais tu ne sais pas comment je pourrais faire pour qu'il fasse une nouvelle matrice mais qui ne contient que les données numériques des 3 premières colonnes inscrite dans data si le code commence par '1'?

    Désolé je n'ai que très peu de base

    Merci et bonne soirée

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir gringozor,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = textdata(textdata(:,1)=='1',1:3);
    Par contre:
    x=strncmp(textdata(:,4), '1', 1);
    Là j'ai une matrice qui identifie si oui ou non le premiers caractère du code est '1'
    n'est pas exact, tu vérifies si tous les éléments de la dernière colonne (4ème)sont égaux à '1'.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    bonsoir winjerome,

    merci pour ta réponse,

    voici ce que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >> x = data(textdata(:,4)=='1',1:3);
    ??? Undefined function or method 'eq' for input arguments of type 'cell'.
    Peux-tu m'expliquer brièvement ce que tu voulais faire? Par exemple je ne sais pas à quoi sert le double égal ==.

    Oui je suis un véritable néophyte !


    Sinon en ce qui concerne la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    >> x=strncmp(textdata(:,4), '1', 1);
    Si j'ai bien compris elle crée une matrice qui indique '1' si les caractères commence par '1'.

    Par exemple, en m'inspirant de l'aide, j'ai tapé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    textdata{strncmp(textdata, '1ce1', 3)}
    et j'obtiens cela:
    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
     
    ans =
     
    1ce1
     
     
    ans =
     
    1ce1
     
     
    ans =
     
    1ce3
     
     
    ans =
     
    1ce2
    Merci pour votre patience.

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    == est une instruction permettant de tester l'égalité entre 2 entités. Par exemple si x=2, alors x==2 renverra 1 et x==3 renverra 0.

    D'une manière générale, avec les chaînes de caractères, il vaut mieux utiliser les fonctions qui leur sont dédiées (strcmp,strncmp,...).

    Ce sont les 3 premières colonnes du tableau de cellule textdata que tu veux récupérer? Ces 3 colonnes contiennent des chaines de caractère ou ce sont des valeurs numériques? Peux-tu nous montrer les 2,3 premières lignes de textdata?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut réponse magelan
    Bonjour magelan,

    Merci pour ta réponse

    Les trois premières colonnes sont des valeurs numériques.

    Bien sur je peux te montrer les premières valeurs de mon tableau. Les ";" représente les colonnes du tableau. tu peux coller sur un fichier texte et l'ouvrir avec excel en délimitant les colonne par les ";" pour mieux visualiser la chose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Date/Heure;D68;D81;NomExperience
    40302,76042;0,028;0,02;4qv3
    40302,76042;0,029;0,022;4qv1
    40302,76042;0,027;0,021;4pk3
    40302,76042;0,03;0,021;4pk3
    40302,76042;0,031;0,024;4pk3
    40302,76042;0,023;0,016;4pk2
    40302,76042;0,022;0,015;4pk2
    40302,76042;0,021;0,015;4pk2
    40302,76042;0,028;0,021;4pk2
    40302,76042;0,026;0,019;4pk2
    40302,76042;0,024;0,017;4pk1
    40302,76042;0,033;0,027;4pk1
    40302,76042;0,026;0,018;4pk1
    j'aimerai enfaite crée une matrice comprenant toute les valeur numériques de chaque code en quatrième colonne. Afin de faire le tri et d'avoir plus d'aisance à traiter les résultats. Je sais que c'est possible avec les fonctions "if", "for", "end" etc... mais je n'y arrive pas. Alors j avais pensé à les trier mais je n'y arrive pas non plus.

    Bonne journée

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

    Essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrice_4pk3 = textdata(ismember(textdata(:,4),'4pk3'),1:3)

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut rep winjerome
    Salut winjerome,

    j'ai tappé ce que tu m'a proposé et voici ce que j'obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >> matrice_4pk3 = textdata(ismember(textdata(:,4),'4pk3'),1:3)
     
    matrice_4pk3 = 
     
         ''     ''     ''
         ''     ''     ''
         ''     ''     ''
         ''     ''     ''
         ''     ''     ''
         ''     ''     ''
         ''     ''     ''
         ''     ''     ''
    Il semble que quelque chose ne va pas.

    en tout ca merci de l'attention que tu portes à ma question.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Ok je vois, dans ce cas fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matrice_4pk3 = Chiffredata(ismember(textdata(:,4),'4pk3'),1:3)
    avec Chiffredata l'autre composante obtenue avec xlsread
    Dernière modification par Invité ; 21/01/2012 à 19h52.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut rep winjerome2
    C'est vraiment complex ce logiciel bien qu'il est super puissant !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >> matrice_4pk3 = Chiffredata(ismember(textdata(:,4),'4pk3'),1:3)
    ??? Undefined function or method 'Chiffredata' for input arguments of type 'double'.
    Je regarde aussi de mon coté, et rien ne fonctionne

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    au temps pour moi !

    il falait écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >> matrice_4pk3 = data(ismember(textdata(:,4),'4pk3'),1:3);
    Je te dois une bière ! merci beaucoup

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

Discussions similaires

  1. fonction .click sur nouvel élément
    Par tylerr dans le forum jQuery
    Réponses: 6
    Dernier message: 30/08/2010, 16h38
  2. fonction pcolor appliqué à un matrice
    Par sulliwane dans le forum MATLAB
    Réponses: 2
    Dernier message: 23/12/2009, 11h06
  3. Réponses: 8
    Dernier message: 14/12/2007, 10h23
  4. Fonction recursives et nouvelle fenêtre
    Par Ro-Minet dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/10/2007, 13h39
  5. Fonction qui retourne une matrice
    Par condor_01 dans le forum C
    Réponses: 7
    Dernier message: 22/10/2007, 13h31

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