D'une liste deux tableaux

Résolu/Fermé
Extern Messages postés 2 Date d'inscription lundi 1 octobre 2018 Statut Membre Dernière intervention 2 octobre 2018 - Modifié le 2 oct. 2018 à 10:21
Extern Messages postés 2 Date d'inscription lundi 1 octobre 2018 Statut Membre Dernière intervention 2 octobre 2018 - 2 oct. 2018 à 10:21
Bonjour à tous ! Je bute depuis quelques jours là dessus, j'en appelle donc à votre aide et enseignement !
Je vais détailler au plus possible pour être clair, si j'échoue dite le je ferai des petits schémas =)

la situation :

je pars d'un fichier data qui ressemble à ça (schématiquement en dessous):

temps voltage courants
1 0 450
2 0 398
.. .. ..
60 0.5 871
61 0.5 854
.. .. ..
1060 0 450
1061 0 398
.. .. ..
2060 0.7 884
2061 0.7 836

1ere colonne le temps qui défile de 0 à environ 35 000.
2e colonne on alterne des voltages et des 0 : 0 0.1 0 0.3 0 0.5 0 0.7 0 1 0 1.5 ...etc
il s'agit en fait de polarisations (voltage non nul), suivis de dépolarisation (voltage nul)
3e colonne les courants associés.

de cette liste de données j'ai besoin d'en faire 2 tableaux :
courants_Pol et courants_Depol structurés comme suit :

courants_Pol :
temps pendant la polarisation 1 courant associés pendant la polarisation 1 temps pendant la polarisation 2 courant associés pendant la polarisation 2 ....

car les temps de polarisation sont théoriquement les mêmes (1000s), mais en regardant mes données j'ai entre 720 et 750 valeurs enregistrés, cela varie à chaque fois mais je me dépatouillerai avec le temps.
il me faut donc les paires (temps, courants) en colonne pour chaque polarisation.

courants_Depol :
même chose mais pour les courants de dépolarisation. subtilité ici, toutes les valeurs du voltage (colonne 2 du fichier data) sont de 0.
je cherche donc à avoir les couples [temps, courants] de chaque dépolarisation de façon séparées.

voici ce que j'ai écris :

boucle qui donne un vecteur V avec toutes les polarisations V [ 0.1 ; 0.2 ; 0.5 ... etc], avec N valeurs (N polarisations différentes)



courants_Pol = zeros(1,2*N); % 2*N car N polarisations + N colonnes de temps
courants_Depol = zeros(1,2*(N+1)); % N+1 car on commence tous les protocoles avec une serie de 0V inutile, mais ce n'est pas l'essentiel ici


u = 1;

for k = 1: D(1,1) % D(1,1) le nombre de ligne de data1
for n = 1:N
if data1(k,2) == V(n,1) % si la polarisation est non nulle
courants_Pol(u,2*n-1) = data1(k,1); % on ajoute la valeur du temps au fichier des courants
courants_Pol(u,2*n) = data1(k,3); % on ajoute la valeur du courant au fichier des courants

u = u + 1;

else
courants_Depol(u,2*n-1) = data1(k,1);
courants_Depol(u,2*n) = data1(k,3);
u = u + 1;

end
end
end




j'ai utilisé u = 1 pour qu'à chaque début de nouvelle polarisation, il enregistre les valeurs du courant associé depuis la ligne 1 du fichier final courants_Pol, mais il me faudrait lui dire "quand la polarisation est terminée, remet u = 1 et enregistre les courants dépolarisation dans le fichier final courants_Depol depuis la ligne 1 dans une nouvelle colonne.

ma logique est de parcourir l'ensemble des lignes du fichier DATA.
à chaque ligne, je demande qu'il regarde la colonne des polarisations et qu'il compare avec la liste de celles ci : le vecteur V
s'il trouve un élément en commun, donc s'il y a une polarisation, alors on enregistre le temps et le courant dans le fichier courants_Pol
sinon (donc le else) c'est qu'il s'agit d'un 0, donc d'une dépolarisation, on enregistre le temps et le courant dans le fichier courants_Depol.

je devrais donc finir avec 2 fichiers, avec autant de couple (temps, courants) que j'ai de polarisation, avec toutes les cases remplies de nombre mais pas de zéro, et ce sur environ 750 lignes.
et pourtant je me retrouve avec des tableaux en majorité remplis de 0, faisant 16 000 lignes (soit la moitié de mon fichier DATA de départ, il sépare donc bien les polarisations des dépolarisations, me fait le bon nombre de colonnes, mais c'est comme s'il enregistrait les données sur la diagonale de mon tableau ...

N'hésitez pas à poser des questions, demandez des clarifications, des schémas ... etc je reste là puisque de toute façon je suis bloqué !
Bonne journée à vous et merci à ceux qui m'auront lu jusqu'ici, et encore plus à ceux qui m'aideront !

edit :



A voir également:

1 réponse

Extern Messages postés 2 Date d'inscription lundi 1 octobre 2018 Statut Membre Dernière intervention 2 octobre 2018
2 oct. 2018 à 10:21
Edit : j'ai ajouté 2 images pour plus de clarté
0