Bonjour,
Je souhaiterai faire en sorte qu'une variable soit un vecteur dont chacun des éléments est un texte (plus précisément un format AAAA/MM/JJ HH:MM importé depuis excel). J'aurai ainsi un vecteur du type :
2008/02/09 03:37
.
.
.
2008/02/25 05:56
J'aimerai ensuite faire appel à une valeur précise du vecteur afin de la ranger dans un tableau. Le tableau correspond à ce qui suit :
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]
Première fonction : fonction de tri
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 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)
La finalité est donc de faire correspondre les dates des premiers et derniers éléments non nuls de chaque vecteur à leur colonne correspondante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 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
Comment m'y prendre ?
Merci !
Partager