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:
fenetrage.':
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ]
J'aimerais donc comparer les maximums de ce genre de tableau (transposé biensurs):
Mais là je bloque sans boucle for, déjà rien que pour crée se tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ]
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
Partager