Incrementer une valeur dans un tableau matlab

Fermé
kanwulf62 Messages postés 2 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 1 juin 2013 - 29 mai 2013 à 14:27
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 3 juin 2013 à 08:34
Bonjour,


Objectif incrementer une valeur dans un tableau

Je fais la lecture du fichier excel qui se presente de la forme suivante
1 2 3 13 5 6 222 336
21 3 4 13 6 7 223 336
3 4 5 13 7 9 224 336
4 5 6 2 8 10 225 336
5 7 12 3 9 12 226 336
6 8 1 13 10 13 227 336
7 9 3 13 11 14 228 336

Quand la 4eme colonne =13
J'incremente la 7eme colonne par z=z+50
Soit 50 la premiere fois puis 100 puis 150...

Et quand la 4 eme colonne different de 1 j'increment la colonne 7 par la derniere valeur de Z.

Exemple sa donne :
1 2 3 13 5 6 272 336
21 3 4 13 6 7 323 336
3 4 5 13 7 9 374 336
4 5 6 2 8 10 375 336
5 7 12 3 9 12 376 336
6 8 1 13 10 13 427 336
7 9 3 13 11 14 478 336

Pour mon code je fais une lecture du fichier qui s'appelle fic_conso qui fonctionne.

disp(['Lecture du fichier conso: ' fic_conso])
tic
fid = fopen(fic_conso);
[tab_conso,tab_conso_dim] = fscanf(fid, ['%d/%d/%d %d:%d:%d;%d;%d'] , [8 inf]);
tab_conso_dim=tab_conso_dim/8;
disp(['dim file:' num2str(tab_conso_dim)]);
tab_conso=tab_conso';
fclose(fid);
% Calcul d'un vecteur de temps decimal pour la conso en jour julian par rapport à la
% date_ref
day_conso=datenum(tab_conso(:,3),tab_conso(:,2),tab_conso(:,1),...
tab_conso(:,4),tab_conso(:,5),tab_conso(:,6))-date_ref;
toc










et ensuite l'objectif de modifier la 7eme colonne il y a un probleme

% Variable a incrementer
z=0
% Taille du tableau pour la boucle for
[m,n]=size(tab_conso)% objectif savoir le nombre de ligne dans mon fichier excel OK apparemment

for i=1:m
if tab_conso(i,4)==13 % objectif pour la ligne correspondante je vais a la colonne 4 pas sure

z=z+50

tab_conso(i,7)= tab_conso(i,7)+z % objectif incrementer la 7eme colonne pas sure
end
if
tab_conso(i,7)= tab_conso(i,7)+z % pas sure
end

end


Ou bien repartir de 0 je ne voie pas de solution




3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
29 mai 2013 à 16:47
for i=1:m
if tab_conso(i,4)==13
z=z+50
endif
if tab_conso(i,4)!=1
tab_conso(i,7)= tab_conso(i,7)+z
end
end
ça devrait fonctionner ça.
0
kanwulf62 Messages postés 2 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 1 juin 2013
1 juin 2013 à 12:50
merci de ton aide mais j'ai finalement trouver cette solution qui fonctionne
mais maintenant je dois faire pour 2H30 et j'ai un probleme avec les IF regardez plus bas SVP
z=0
% %Taille du tableau pour la boucle for
[m,n]=size(tab_conso)
% %Seul le nombre de ligne m t'interesse.
for i=1:m
if tab_conso(i,4)==12

z=z+37;

tab_conso(i,7)= tab_conso(i,7)+z;
else
tab_conso(i,7)= tab_conso(i,7)+z;
end

end


le 2eme code avec 2H30

nous avons tab conso 4 = heure
et tab cconso 5 = minute
et tab conso 7= la valeur du tableau a incrementer

donc j'ai essayer cela mais il se passe un probleme lors du resultat
et pas de probleme niveau compilation don je fais appel a vous

tab_conso0=tab_conso;

z=0
% %Taille du tableau pour la boucle for
[m,n]=size(tab_conso)
% %Seul le nombre de ligne m t'interesse.
for i=1:m
if tab_conso(i,4)==12

z=z+37;

tab_conso(i,7)= tab_conso(i,7)+z;
end
if tab_conso(i,4)==13
z=z+37;

tab_conso(i,7)= tab_conso(i,7)+z;
end
if tab_conso(i,4)==14
if tab_conso(i,5)<30
z=z+37;
tab_conso(i,7)= tab_conso(i,7)+z;
end
else
tab_conso(i,7)= tab_conso(i,7)+z;
end

end


cordialement
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
3 juin 2013 à 08:34
Rien compris.
Tu ne dit pas ce que tu veux obtenir.
0