Séparation d'un vecteur en plusieurs vecteurs

Fermé
Romaric - Modifié par Romaric le 7/05/2011 à 13:02
 Romaric - 7 mai 2011 à 14:26
Bonjour,

Je cherche à trier un très long vecteur colonne en plusieurs petits vecteurs afin de pouvoir connaitre leur taille, leur valeur maximale et leur somme. Le vecteur d'entrée est principalement composé de 0 mais possède quelques suites de valeurs non nulles. Les vecteurs de sortie correspondent aux suites de valeurs non nulles. Je souhaiterai aussi pouvoir connaitre leur position dans le vecteur d'origine.

Exemple :

V = 00...0Y1Y2..Yn00.......0Yn+1..Yn+n00.....0Y2n... etc.

devient

Y1Y2..Yn [position de Y1 dans V, position de Yn dans V]

Yn+1..Yn+n [position de Yn+1 dans V, position de Yn+n dans V]

etc.

Avez vous une idée de la façon dont je peux m'y prendre ?

Merci =)

EDIT1 : Ce serait sous MATLAB

1 réponse

J'ai réussi à sortir un petit truc, je vous le copie colle ci dessous. Pouvez vous me dire comment l'améliorer s'il vous plait ? =)

Première fonction : fonction de tri

function [ M ] = tri( V )
k=1;
l=1;
for n=1:size(V)-1
if V(n)==0 && V(n+1)~=0
    M(l,k)=V(n+1);
    l=l+1;
end
if V(n)~=0 && V(n+1)~=0
    M(l,k)=V(n+1);
    l=l+1;
end
if V(n)~=0 && V(n+1)==0
    k=k+1;
    l=1;
end
end
M;
end


Deuxième fonction : tableau donnant le nombre de valeurs de chaque petit vecteurs, le maximum et leur somme (multipliée par 60 dans mon cas)

function [ T ] = tabval( M )
for k=1:size(M,2)
T(1,k)=nnz(M(:,k));
T(2,k)=max(M(:,k));
end
T(3,:)=sum(M*60); 
end


Voilou.

Merci pour les remarques à venir =)
0