Bonjour,
Comment subdiviser cette séquence en sous-ensembles entre chaque 0 ?
exemple :
A=[0 –1 0 1 0 1 2 1 2 1 2 0]
pour trouver
[0 -1 0] , [0 1 0] et [0 1 2 1 2 1 2 0]
et la séquence peut être variable et contient des 0.
Merci
Bonjour,
Comment subdiviser cette séquence en sous-ensembles entre chaque 0 ?
exemple :
A=[0 –1 0 1 0 1 2 1 2 1 2 0]
pour trouver
[0 -1 0] , [0 1 0] et [0 1 2 1 2 1 2 0]
et la séquence peut être variable et contient des 0.
Merci
Il te suffit dans un premier temps de repérer les 0, puis de découper ton vecteur selon leur position.
Tu as essayé de coder quelque chose ? Quel est le point particulier qui te bloque ?
[quote=Winjerome;6752777]
repérer les 0, leurs position
Code : Sélectionner tout - Visualiser dans une fenêtre à part find(A(i)==0)
Bonjour,
Essaie plutôt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part find(A==0)
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 A=[0 1 0 1 0 1 2 1 2 1 2 0]; ind=find(A==0); if(isempty(ind)==0) for i=1:length(ind)-1) // X{i}=A(ind(i):ind(i+1));// tu stockes tes vecteurs dans une cellule. Si tu veux éliminer les 0 tu fais : A(ind(i)+1:ind(i+1)-1); end end
pourquoi donne une erreur et comment on le corrige
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 for i=1:length(X) gh = cellfun(@(i) i==1,X,'UniformOutput',false); end for i=1:length(gh) e{i}=unique (gh{i}); d{i}= histc (gh{i}, b{i}); end
Error using histc First Input must be a real non-sparse numeric array. Error in TEST15 (line 43) d{i}= histc (gh{i}, b{i});
comment en fait la somme de gh ou loccurrence de 1 dans gh
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for i=1:length(X) gh = cellfun(@(i) i==1,X,'UniformOutput',false); end
Si tu souhaites trouver seulement les occurrences de 1, tu n'as pas besoin de boucle, cellfun s'occupe du parcours des cellules :
Au contraire si tu souhaites trouver les occurrences de 1, 2... Nb, il te faut une boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part gh = cellfun(@(x) sum(x==1), X);
Ton erreur précédente vient du fait que gh = cellfun(@(i) i==1,X,'UniformOutput',false); renvoie des valeurs logiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for i=1:Nb gh{i} = cellfun(@(x) sum(x==i), X, 'UniformOutput', false); end
Dernière modification par Invité ; 19/09/2012 à 03h40.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager