Bonjour à tous !

Je travaille sur des données tri-horaires (ce qui signifie que j'ai une donnée toutes les trois heures).
Exemple :
>> colonne 1 --> les heures
>> colonne 2 --> les données

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
 
00 12
03 15
06 18
09 5
12 0
15 25
18 13
21 13
23 21
00 19
03 17
06 18
09 3
12 2
15 6
18 11
21 23
23 12
Et j'ai besoin de données horaires (ce qui signifie qu'il me faut une donnée par heure).
Pour avoir ces données horaires, j'ai choisi de tripliquer (multiplier par 3) chaque ligne de ma matrice, sauf l'heure qui doit être mise à jour ... :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
00 12
01 12
02 12
03 15
04 15
05 15
06 18
07 18
08 18
09 5
10 5
11 5
12 0
13 0
14 0
15 25
15 25
17 25
18 10
19 10
20 10
21 13
22 13
23 13
00 19
01 19
02 19
03 17
03 17
03 17

etc

Sachant qu'en réalité je n'ai pas 2 colonnes mais 6, voici le code que j'ai pour le moment :
Je mets 3 fois la même boucle à la suite pour rajouter 3 ligne dans ma "Matrice(n)" horaire pour chaque ligne "lig" de ma matrice tri-horaire ...
Exemple.txt

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
 
%% IMPORTATION DES DONNEES
 
% Choix du fichier de données à utiliser  :
FichierTexte = 'Exemple.txt'
 
% Ouverture du fichier texte dans lequel il y a les houles.
fid=fopen(FichierTexte,'r'); 
 
% Lecture d'un texte formaté. 
m=textscan(fid,'%f %f %f %f %f %f %f','delimiter','\t');
 
% Fermeture du fichier après lecture.
fclose(fid);
 
YY=m{1}; % Année 
MM=m{2}; % Mois 
JJ=m{3}; % Jour 
HHtri=m{4}; % Heure
Min=m{5}; % Minutes 
Vit=m{6}; % 
Dir=m{7}; % 
 
%% CONVERTIR LE TRI-HORAIRE EN HORAIRE
 
% J'initialise le nombre de ligne de ma matrice Tri-horaire
Dlig=length(YY)
n=1
 
   for lig=1:Dlig
       % J'initialise mon heure pour n=1
       if n==1
          HH(1) = 0
       % Si j'atteins 23h, je réinitialise HH
       elseif HH(n-1) == 23
          HH(n) = 0
       % Dans tous les autres cas, je rajoute 1h à HH :
       else
           HH(n) = HH(n-1) +1
       end
 
       % Je concatène ma première ligne pour la valeur lig actuelle     
       Matrice(n) = horzcat (YY(lig), MM(lig), JJ(lig), HH(n), Vit(lig), Dir(lig))
 
       if n==1
          HH(1) = 0
       elseif HH(n-1) == 23
          HH(n) = 0
       else
           HH(n) = HH(n-1) +1
 
       % Je concatène ma deuxième ligne pour la valeur lig actuelle     
       Matrice(n) = horzcat (YY(lig), MM(lig), JJ(lig), HH(n), Vit(lig), Dir(lig))
       end
 
       if n==1
          HH(1) = 0
       elseif HH(n-1) == 23
          HH(n) = 0
       else
           HH(n) = HH(n-1) +1
 
       % Je concatène ma troisième ligne pour la valeur lig actuelle     
       Matrice(n) = horzcat (YY(lig), MM(lig), JJ(lig), HH(n), Vit(lig), Dir(lig))
       end
   end
Le problème c'est qu'en plus d'être très brouillon, mon travail ne fonctionne pas !

In an assignment  A(I) = B, the number of
elements in B and I must be the same.

Error in AllData (line 89)
       MatriceVent(n) = horzcat (YYV(lig),
       MMV(lig), JJV(lig), HHVbis(n),
       VitV(lig), DirV(lig))
 
Comment puis-je faire pour créer ma nouvelle Matrice qui consiste à regrouper des matrices déjà existantes, tripliquer chaque ligne en modifiant seulement l'heure ...

Je suis en train de voir pour :
1) Créer ma matrice HH avec 3*Dlig lignes (3 fois le nombre de ligne de ma matrice tri-horaire).
2) Concaténer mes matrices (sauf HH)
3) Tripliquer chaque ligne
5) rajouter HH à tout ça

... Si vous avez plus simple je prends !


Merci d'avance !