Bonjour à tous !
Appel au secours : après avoir retourné le problème dans tous les sens, je ne trouve définitivement pas la solution.
Il s'agit de gestion de tableau : j'ai plusieurs vecteurs (variables{1},variables{2},variables{3}) regroupés dans un tableau appelé "variables". Ces vecteurs sont de même taille.
Concrètement, je voudrais que lorsqu'une ligne d'un de ces vecteur n'est pas un nombre, cette ligne soit supprimée dans tous les autres vecteurs.
Voici le code, suivi de l'explication ligne à ligne de ce que j'ai fait :
Explication :
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 % DELETION OF INVALID VALUES function [variables] = deletion(variables) varclear = variables; for i = 1:length(variables) j = 1; l = 1; while j<length(variables{1})+1 && l<length(varclear{1})+1 if isnan(variables{i}(j)) == 1 for k = 1:length(variables) varclear{k}(l) = []; end else l = l+1; end j = j+1; end end variables = varclear; disp(' ') disp([num2str(length(variables{1})) ' values considered.'])
l.3 : la fonction s'appelle "deletion". Elle prend en entrée "variables". En sortie, on obtient d'autres valeurs de "variables"
(NB : le fait que l'input et l'output de "deletion" aient le même nom ne semble pas avoir d'influence)
l.5 : introduction d'une variable temporaire "varclear", identique à "variables"
l.7 : on parcourt l'ensemble des variables (variables{1}, variables{2}, variables{3})
l.10 : et on définit une variable j (resp l) associée à la longueur des "variables" originales (resp "varclear")
l.11 : si la cellule étudiée au sein de la "variables" étudiée n'est pas un nombre
l.12 & 13 : alors on supprime cette cellule (indice l) pour toutes les "varclear" (indice k)
(NB : "variables" reste inchangé)
(NB2 : dans ce cas, la prochaine cellule de la "varclear" à étudier a toujours pour indice l puisque l'ancienne cellule indicée l a été supprimée)
l.15 : si la cellule étudiée au sein de la "variables" étudiée est un nombre
l.16 : alors la prochaine cellule de la "varclear" a étudier aura pour indice l+1
l.18 : dans tous les cas, la prochaine cellule de la "variables" a étudier aura pour indice j+1
l.21 : "variables" est redéfinie comme "varclear"
Concrètemement, toutes les valeurs NaN sont bien supprimées des vecteurs de "variables", mais d'autres valeurs chiffrées le sont également, ce qui me fait perdre beaucoup de données . . .
Une idée du pourquoi ça ne fonctionne pas ????
Merci à vous !
Partager