Bonjour,
A partir de la réponse de FLB j'ai donc construit la fonction nonzeros2:
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 :
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:
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.
Partager