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 :

Taille vecteur dans matrice


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 12
    Par défaut Taille vecteur dans matrice
    Bonjour,

    J'aurais besoin d'aide pour aborder un programme. Enfaite j'ai une matrice avec 10 lignes et 1 colonne.
    J'aimerais récupérer le vecteur 1 5 6 et 8 2 distinctement afin d'en déterminer la taille. J'ai fais ce petit bout de code cependant j'obtiens que la taille du 2 ème vecteur (donc 2 ici). Merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x=[NaN NaN NaN NaN 1 5 6 NaN 8 2 ];
    ind=find(x>0); % Indice des éléments différents de NaN
    s=sum(sum(diff(ind,2)==0)); %nombre d'éléments qui se suivent

  2. #2
    Membre averti
    Homme Profil pro
    docteur
    Inscrit en
    Mai 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : docteur

    Informations forums :
    Inscription : Mai 2013
    Messages : 45
    Par défaut
    Bonjour ,

    je ne suis pas sur de répondre à ta question, mais il me semble que si tu veux
    créer different vecteurs pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=[NaN NaN NaN NaN 1 5 6 NaN 8 2 ];
    par exemple récupérer le 1, tu crées un vecteur A par exemple tel que
    pour recuperer le 8, tu crées vecteur B tel que
    tu procèdes de la même façon pour les autres valeurs.

    regardes ça aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A=[1,2,3,5,9; 3,4,2,7,4]
     
    B=A(:,2)
    C=A(2,:)
     
    size(C)

  3. #3
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Par défaut
    Salut,
    je te conseille de regarder la documentation de la méthode isnan, ainsi que les quelques lignes de code de cette contribution :
    http://matlab.developpez.com/telecha...ans-un-vecteur

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 32
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    % Ton vecteur est celui là : 
     
    x=[NaN NaN NaN NaN 1 5 6 NaN 8 2 ];
    ind=find(x>0)    % ce que t'as fait ici sert à récupérer les indices des éléments qui satisfont ta condition x>0 , je trouve que ce que t'as fait est une bonne chose.
    >> ind =

    5 6 7 9 10

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    y= x(1,ind)  % pour récupérer les valeurs de ces éléments et les mettre dans un vecteur y
    >> y=

    1 5 6 8 2

    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     z1=  y(1,1:3)  % premier vecteur récupéré ]
    z1 =

    1 5 6
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     z2 = y ( 1, 4:5)   % deuxième vecteur récupéré
    z2 =
    8 2
    Pose d'autres questions si ca ne répond pas à ton besoin


    Salut

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 12
    Par défaut
    Merci pour vos réponses. C'est la solution de FLB qui m'a totalement convenu. Merci encore.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 12
    Par défaut Taille vecteur zéro entre 2 vecteurs
    Bonjour,

    A partir de la réponse de FLB j'ai donc construit la fonction nonzeros2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function [snz, nbnz ]=nonzeros2(vin)
     
    snz=diff(find(~[0 vin 0]))-1;
    snz=snz(snz~=0);
    snz=(snz<2)=[]; %nombre élément minimum 
    nbnz=numel(snz);
    Par contre moi ce que j'aimerais faire sur le vecteur x :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x=[0 0 0 2 5 6 0 0 1 2 0 0 0 4 5 7 0]
    C'est de compter les vecteurs non zeros mais que si entre 2 vecteurs il y a un nombre de zéros inférieur à n alors on ne compte pas 2 vecteurs mais 1 seul. Donc pour cela j'ai essayé d'utiliser la fonction nonzeros2 en comptant les valeurs nonzeros et aussi les zéros:
    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
    x=[0 0 0 2 5 6 0 0 1 2 0 0 0 4 5 7 0];
    [snz1 nbnz1]=nonzeros2(~x);
    [snz2 nbnz2]=nonzeros2(x);
     
    sz1= 
         3	2  3  1
     
    nbnz1=
         4
     
    sz2=
        3  2  3  
     
    nbnz2=
          3
    Mais j'ai du mal à m'en sortir et à avoir ce que je veux. Si quelqu'un a une idée ? Merci.

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/01/2015, 09h23
  2. mettre vecteurs dans matrice
    Par automa dans le forum Images
    Réponses: 17
    Dernier message: 24/03/2010, 18h06
  3. comparaison vecteur dans matrice 3d
    Par j_ere_my dans le forum MATLAB
    Réponses: 14
    Dernier message: 20/07/2009, 13h19
  4. Réponses: 3
    Dernier message: 29/11/2007, 15h50
  5. Réponses: 4
    Dernier message: 05/05/2007, 19h12

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