Bonjour
SVP je veux savoir comment remplacer l'élément répété dans un tableau par zero
exemple on a le tableau suivant:on doit trouverCode:d=[1 3 2 2 5 4 6 5]
Merci beaucoup d'avanceCode:d=[1 3 2 0 5 4 6 0]
Version imprimable
Bonjour
SVP je veux savoir comment remplacer l'élément répété dans un tableau par zero
exemple on a le tableau suivant:on doit trouverCode:d=[1 3 2 2 5 4 6 5]
Merci beaucoup d'avanceCode:d=[1 3 2 0 5 4 6 0]
Bonjour,
La méthode simple ne demandant pas de trop réfléchir consiste à prendre les éléments de d l'un après l'autre et à regarder si cet élément est déjà dans la partie déjà étudiée de d. Cela pourrait s'écrire :
Il est aussi possible d'utiliser la fonction @unique, qui retourne directement les éléments de d sans les doublons (qui sont donc retirés, et non remplacés par des zéros comme demandé) :Code:
1
2
3
4
5
6
7
8 clear d=[1 3 2 2 5 4 6 5] for k=2:length(d) % for each element of d - exept the first one if ismember(d(k), d(1:k-1)) % if the current element d(k) is already in the previous part of the vector d(k) = 0 ; % set the current element to zero. end end d
L'argument "stable" éviter que @unique renvoie les éléments dans l'ordre croissant.Code:[outputVector] = unique(d, 'stable') % returns vector d with removed duplicates
Il est possible d'utiliser la fonction @unique pour faire ce qui est demandé :Code:
1
2
3
4 [a,b] = unique(d, 'stable') % returns vector d with removed duplicates outputVector = d*0 ; % initialise output vector to zeros outputVector(b) = d(b) ; % set the right elemeents of outputVector to the corresponding value from the vector d