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 :

Recherche specifique dans un vecteur


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut Recherche specifique dans un vecteur
    Bonjour,
    Je souhaite faire des statistiques a partir de fichier composer de '1' ou '0'. exemple pour la premiere boucle je compte le nombre de '1' de 1 a 8 dans une variable et je voudrais compter le nombre de '0' (ou de '1') dans le reste de mon vecteur,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    for i=1:1472
       StatR(:,i)=load ([DIR,list(i).name]);
       Id=fix(i/9)*8+1;
       Rate(i,1)=size(find(StatR(Id:Id+7,i)),1); % compte le nbre de 1
       Rate(i,2)=(100/8)*Rate(i,1); % calcul le pourcentage
       tmp=size(find(StatR(1:Id,i)),1)+; % cet ici qe j'aimerais compter le nombre de '0' dans tout mon vecteur sauf dans la partie du vecteur ou je viens de 
    chercher au dessus
       Rate(i,3)=1472-8-tmp
       Rate(i,4)=(100/(1472-8))*Rate(i,3);  % dans le cas ou on compte le nombre de 0
    end
    Merci de vos reponses.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    Je chercais en fait a savoir si il exitait une option ou command pour chercher partout sauf a un endroit specifier.Voila la solution que j'ai trouver mais j'ai un bug que je ne comprend pas. et un autre pour les huit premieres boucles avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmp=size(find(StatR(1:Id,i)),1)+size(find(StatR(Id+7:1464,i)),1);
    .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for i=1:1472
       StatR(:,i)=load ([DIR,list(i).name]);
       Id=fix(i/9)*8+1;
       Rate(1,i)=size(find(StatR(Id:Id+7,i)),1);
       Rate(2,i)=(100/8)*Rate(1,i);
       tmp=size(find(StatR(1:Id,i)),1)+size(find(StatR(Id+7:1464,i)),1);
       Rate(3,i)=1464-tmp;
    	Rate(4,i)=(100/1464)*Rate(3,i);
     
    end

  3. #3
    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
    En général, dans un vecteur avec uniquement des 0 ou des 1 :

  4. #4
    Membre expérimenté Avatar de LordPeterPan2
    Inscrit en
    Février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 247
    Par défaut
    Pour un vecteur VECT rempli de 1 ou de 0 :
    Le premier renvoie le nombre d'éléments non nul de VECT
    Le second renvoi la somme des termes de VECT
    MatDub à montrer (preuve à l'appui ) que la seconde méthode est plus rapide

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    Voic la solution que j'ai trouver enfin elle devrait marcher mais j'ai un bug bizarre. j'ai relu plusieurs fois mon code mais je ne vois pas d'erreur qui expliquerais mon bug. Si qq'un pouvait le tester
    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
    StatR=zeros(1472,1472);
    Rate=zeros(4,1472);
    for i=1:1472
       tmp=0;
       StatR(:,i)=load ([DIR,list(i).name]);
       Id=fix(i/9)*8+1;
       Rate(1,i)=size(find(StatR(Id:Id+7,i)),1);
       Rate(2,i)=(100/8)*Rate(1,i);
       if (fix(i/9)*8+1 ~=1 )
          tmp=size(find(StatR(1:Id,i)),1)
       end   
       tmp=tmp+size(find(StatR(Id+8:1464,i)),1)
       Rate(3,i)=1464-tmp;
    	Rate(4,i)=(100/1464)*Rate(3,i);
     
    end
    NB: Je suis toujours interesser pour savoir s'il existe un moyen de chercher dans tout un vecteur sauf un endroit specifier.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    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
    StatR=zeros(1472,1472);
    StatR(1:3,1)=1;
    StatR(5:8,1)=1;
    Rate=zeros(4,1472);
    for i=1:1472
       tmp=0;
       %StatR(:,i)=load ([DIR,list(i).name]);
       Id=fix(i/9)*8+1;
       Rate(1,i)=sum(StatR(Id:Id+7,i));
       Rate(2,i)=(100/8)*Rate(1,i);
       if (fix(i/9)*8+1 ~=1 )
          tmp=sum(StatR(1:Id+7,i));
       end   
       tmp=tmp+sum(StatR(Id+8:1464,i));
       Rate(3,i)=1464-tmp;
    	Rate(4,i)=((100/1464)*Rate(3,i));
    end
    le find ou le sum font la meme chose donc toujours le meme bug bizarre apres l'execution du programme ci dessous qui correspond au chargement de mon premier fichier. Apres le calcul Rate(3,i) il ajoute 1.0e+003* dans la premiere case et ensuite toud les chiffres sont diviser par 1000.
    Matlab ne peut afficher des milliers???

  7. #7
    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 zicos
    le find ou le sum font la meme chose
    Euh... NON

    Sinon, ton problème est juste un problème de format d'affichage. Essaie ceci :

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Par défaut
    Citation Envoyé par Dutmatlab
    Euh... NON
    Je voulais dire que les deux lignes suivantes donnaient le meme resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Rate(1,i)=size(find(StatR(Id:Id+7,i)),1);
    Rate(1,i)=sum(StatR(Id:Id+7,i));
    Le 'format long' ajoute juste des chiffres apres la virgule. Ce n'est qu'une question d'affichage, pas tres important mais bon je trouve ca quand meme bizarre. Une histoire d'option d'Editor sans doute.

    Merci pour les reponses. Je resolu

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

Discussions similaires

  1. recherche un élément dans un vecteur trié
    Par jena dans le forum Signal
    Réponses: 5
    Dernier message: 10/12/2008, 12h02
  2. Recherche d ' un nombre dans un vecteur
    Par racoboss dans le forum Langage
    Réponses: 3
    Dernier message: 11/01/2008, 19h43
  3. Recherche dans un vecteur
    Par undercrash dans le forum SL & STL
    Réponses: 14
    Dernier message: 08/10/2007, 11h59
  4. Rechercher Fichier specifique dans un lecteur
    Par franck.automaticien dans le forum Scripts/Batch
    Réponses: 29
    Dernier message: 10/05/2007, 16h05
  5. recherche dans un vecteur
    Par ZaaN dans le forum C++
    Réponses: 2
    Dernier message: 20/12/2005, 12h53

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