Detection d'un max sur un groupe de données dans un vecteur.
Bonjours,
j'ai un vecteur V de taille 50 de se type:
[0 0 0 3 6 4 0 0 0 0 0 0 0 0 0 0 0 3 2 6 7 6 0 0 0 0 0 0 0 0 0 0 7 8 2 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0]
j'aimerais trouver le maximum de chaques groupes de donnée.
Par groupe de donnée j'entend par la (dans cet exemple) :
(3 6 4), (3 2 6 7 6) et (7 8 2 0 6).
Je n'ai trouvé pour l'instant comme méthode que celle de "fenêtrage" càd:
Code:
1 2 3 4 5 6
| taille_fenetre=10;
fenetrage = reshape(V,taille_fenetre,[]);
[~,indice] = max(fenetrage);
indice = indice + (0:length(indice)-1)*taille_fenetre;
resultat=zeros(1,length(V));
resultat(indice)=V(indice); |
fenetrage.':
Code:
1 2 3 4 5
| [0 0 0 3 6 4 0 0 0 0;
0 0 0 0 0 0 0 3 2 6 ;
7 6 0 0 0 0 0 0 0 0 ;
0 0 7 8 2 0 6 0 0 0 ;
0 0 0 0 0 0 0 0 0 0 ] |
le problème est qu'il me renvoi les indices de 5 maximum (5 20 21 34 41) alors que je n'est que 3 groupes de donnée, du a la coupure du 2e groupe de donnée et aussi du a l'absence de groupe de donnée dans la 5ème fenêtre.
J'aimerais donc comparer les maximums de ce genre de tableau (transposé biensurs):
Code:
1 2 3 4
| [0 0 0 3 6 4 0 0 0 0 0 0 0 0 0 0 0 3 2 6 ;
0 0 0 0 0 0 0 3 2 6 7 6 0 0 0 0 0 0 0 0 ;
7 6 0 0 0 0 0 0 0 0 0 0 7 8 2 0 6 0 0 0 ;
0 0 7 8 2 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 ] |
Mais là je bloque sans boucle for, déjà rien que pour crée se tableau.
Mon algorithme s'appliquerait sur des grands jeu de donnée et for serait trop long...
Donc voila si vous avez des idées a me suggérer pour se problème ou même une autre méthode de détection de maximum je suis preneur :D