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
Version imprimable
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
:salut:
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]:salut:
repérer les 0, leurs position
Code:find(A(i)==0)
Bonjour,
Essaie plutôt :
Code:find(A==0)
Code:
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 corrigeCode:
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:
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: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:
1
2
3 for i=1:Nb gh{i} = cellfun(@(x) sum(x==i), X, 'UniformOutput', false); end
MERCI,merci BEAUCOUP
pour m'aide