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 :

Création vecteur et matrices de chaines de caractères


Sujet :

MATLAB

  1. #21
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut Création vecteur et matrices de chaines de caractères
    Bonjour,

    Un exemple (avec boucle hélas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    clear
    A=fix(70*(rand(10,7)+0.5));
    j=0;B=[];
    for i=1:length(A)
    if sum(A(i,:))>500
        j=j+1;
    B(j,:)=A(i,:);
    end
    end
    B
    Sans boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A=fix(70*(rand(10,7)+0.5));
    J=find(sum(A')>500);
    B(1:length(J),:)=A(J,:)

  2. #22
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    Bonjour,
    j'ai essayé la première solution mais j'ai remarqué que la taille de Matrice B n'est pas fixe et elle se change pour chaque itération malgré que je garde le même test (if) Si vous pouvez m'expliquer comment faire pour avoir une matrice B de taille fixe parce que j'utilise la taille pour savoir combien j'ai des solutions possibles pour mon programme. Autrement j'ai besoin non que de valeur de la matrice B mais aussi de sa taille fixe. La 2ème solution me donne un erreur :
    for i=1:2500
    J=find((RCConf(i)>= RCmin) & (TRConf(i)<=RTmax )& (AConf(i)>=Amin) ); %RCConf, TRConf, AConf sont de tailles (2500,1)
    B(1,length(J))=A(i);
    end

    ??? Attempted to access A(1,0); index must be a positive integer or logical.

  3. #23
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    La taille de B est donnée par la deuxième ligne de la solution 2

  4. #24
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    D'accord je l'ai essayé mais un erreur se produit :
    for i=1:2500
    J=find((RCConf(i)>= RCmin) & (TRConf(i)<=RTmax )& (AConf(i)>=Amin) ); %RCConf, TRConf, AConf sont de tailles (2500,1)
    B(1,length(J))=A(i);
    end

    ??? Attempted to access A(1,0); index must be a positive integer or logical.

  5. #25
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Tu as un indice nul.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    N=10;
    A=fix(70*(rand(N)+0.5));B=[];
    RCConf=fix(70*(rand(N,1)+0.5));
    TRConf=fix(70*(rand(N,1)+0.5));
    AConf=fix(70*(rand(N,1)+0.5));
    RCmin=5;
    RTmax=50;
    Amin=0;
     
    i=1:length(A);
    J=find((RCConf(i)>= RCmin) & (TRConf(i)<=RTmax )& (AConf(i)>=Amin) );
    B(1:length(J),:)=A(J,:)

  6. #26
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    Bonjour,
    Oui ça marche merci bien

  7. #27
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut Matrices en Matlab
    Bonjour,
    Maintenant j'ai une question récapitulant tout le travail j’espère bien que vous m'aide. Ma problème est la suivante :
    Comme d'habitude j'ai une matrice A(7,100) et B (7,100) associée à A. j'ai de plus une matrice C (1,7) .
    Je veux extraire les colonnes respectant la condition suivante:
    B(1,colonne (i))<C(1:1)
    && B(2,colonne (i))<C(1:2)
    && B(3,colonne (i))<C(1:3)
    && B(4,colonne (i))<C(1:4) avec i de 1:100
    && B(5,colonne (i))<C(1:5)
    && B(6,colonne (i))<C(1:6)
    && B(7,colonne (i))<C(1:7)

    Une fois que la colonne de B respecte la contrainte ci dessus, On stocke la colonne correspondante de A (en non pas de B puisqu'elles sont associées) dans un tableau "solution"
    J’espère que le problème est clair sinon je peux vous donner un exemple.

  8. #28
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,

    D'après ce que j'ai compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for j=1:7
        for i=1:100
            if B(j,i)<C(j)
                sol(j)=A(j,i);
            end
        end
    end
    sol
    ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    n=0;
    for i=1:100
        if B(1,i)<C(1) && B(2,i)<C(2) && B(3,i)<C(3) && B(4,i)<C(4) && B(5,i)<C(5) && B(6,i)<C(6) && B(7,i)<C(7)
            n=n+1;
            sol(n,:)=A(:,i);
        end
    end
    sol

  9. #29
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut Matrice Matlab
    Bonsoir, est ce que vous pouvez me corriger cet erreur:
    taille=length(conf)
    TRConflocal(1:taille,: )=MTR(ES(conf(1:taille,1)))+(max(MTR(ES(conf(1:taille,2))),MTR(ES(conf(1:taille,3)))))+(max(MTR(ES(conf(1:taille,4))),MTR(ES(conf(1:taille,5)))))+(max(MTR(ES(conf(1:taille,6))),MTR(ES(conf(1:taille,7)))));


    ??? Index exceeds matrix dimensions.

    Error in ==> Untitled at 138
    TRConflocal(1:taille,:
    )=MTR(ES(conf(1:taille,1)))+(max(MTR(ES(conf(1:taille,2))),MTR(ES(conf(1:taille,3)))))+(max(MTR(ES(conf(1:taille,4))),MTR(ES(conf(1:taille,5)))))+(max(MTR(ES(conf(1:taille,6)))

    Avec MTR(7,100) ; ES(7,100); conf est de taille dynamique (exprimé par la variable "taille" ) : seulement le nombre de colonne n'est pas fixe mais le nb de ligne est toujours =7 .

  10. #30
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonsoir,

    Vérifies si conf ne contient pas de zéros !

  11. #31
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    Non, ni conf ni MTR ni ES contiennent des 0

  12. #32
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Tu as toujours 0< taille < 8 ?

  13. #33
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    Oui le nb de ligne est toujours =7 mais le nombre de colonne se change d'une exécution à une autre.

  14. #34
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,
    Ton cas est compliqué, il n'y a pas de solution pour 2,4 et 6 colonnes.
    Exemple :

    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
    clear
    MTR=fix(10*(rand(7,100)+0.5));
    ES=fix(10*(rand(7,100)+0.5));
    conf=fix(10*(rand(7,7)+0.5)) ;
    [L,taille]=size(conf);
     
    if taille == 1
        RConflocal(1:taille,:)=MTR(ES(conf(1:taille,1)));
    elseif taille == 3
        RConflocal(1:taille,:)=MTR(ES(conf(1:taille,1)));
        RConflocal(1:taille,:)=max(MTR(ES(conf(1:taille,2))),MTR(ES(conf(1:taille,3))));
    elseif taille ==5
        RConflocal(1:taille,:)=MTR(ES(conf(1:taille,1)));
        RConflocal(1:taille,:)=max(MTR(ES(conf(1:taille,2))),MTR(ES(conf(1:taille,3))));
        RConflocal(1:taille,:)=max(MTR(ES(conf(1:taille,4))),MTR(ES(conf(1:taille,5))));
    elseif taille ==7
        RConflocal(1:taille,:)=MTR(ES(conf(1:taille,1)));
        RConflocal(1:taille,:)=max(MTR(ES(conf(1:taille,2))),MTR(ES(conf(1:taille,3))));
        RConflocal(1:taille,:)=max(MTR(ES(conf(1:taille,4))),MTR(ES(conf(1:taille,5))));
        RConflocal(1:taille,:)=max(MTR(ES(conf(1:taille,6))),MTR(ES(conf(1:taille,7))));
    end
     
    RConflocal

  15. #35
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    Bonjour,
    tout d'abord merci pour vos réponses précieuses, mais si vous pouvez m'expliquer pourquoi il n’y a pas de solutions pour 2,4,6 ?

  16. #36
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,
    Si la colonne est 2 cette instruction ne fonctionne pas car il faut 3 colonnes à conf !:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     RConflocal(1:taille,:)=max(MTR(ES(conf(1:taille,2))),MTR(ES(conf(1:taille,3))));
    ...

  17. #37
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    J'ai compris merci bien

Discussions similaires

  1. transposé d'une matrice de chaine de caractére carré
    Par maissaab dans le forum Général Python
    Réponses: 4
    Dernier message: 04/04/2011, 13h14
  2. Matrice de chaine de caractères
    Par polopolo81 dans le forum Scilab
    Réponses: 1
    Dernier message: 30/08/2010, 18h15
  3. Réponses: 5
    Dernier message: 12/01/2009, 18h47
  4. [Débutant] Matrice de chaine de caractères
    Par anael52 dans le forum MATLAB
    Réponses: 5
    Dernier message: 02/06/2008, 09h44
  5. Réponses: 11
    Dernier message: 10/03/2008, 12h49

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