Incrementer une valeur dans un tableau matlab

kanwulf62 Messages postés 2 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  2. kanwulf62 Messages postés 2 Statut Membre
     
    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
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Rien compris.
    Tu ne dit pas ce que tu veux obtenir.
    0