How Detect duplicate value in each column and replace first value with zero?

For example
A = [ 5 3 2 5 1 3 1 1 2 2;
5 8 6 6 1 4 4 2 3 3;
7 9 9 7 4 8 10 6 4 7;
8 10 10 9 9 8 10 6 5 7];
In first column 5 duplicate and in five column 1 duplicate I want replace first duplicated values with 0

3 commentaires

Running your code I get:
A =
5 3 2 5 1 3 1 1 2 2
5 8 6 6 1 4 4 2 3 3
7 9 9 7 4 8 10 6 4 7
8 10 10 9 9 8 10 6 5 7
I do NOT see 5 duplicates in column 1. I don't even see 5 values of anything in column 1 which has only 4 elements. In column 5 I do seem 1 duplicate since the 1 of row 1 is duplicated in row 2. But you need to say whether a number is a duplicate if it's adjacent to the same number, or can it appear apart/separate from it. For example, is the third 10 in row 4 a duplicate or not.
But the main problem is you saying there are 5 duplicates in column 1. Explain that.
the cyclist
the cyclist le 1 Avr 2017
Modifié(e) : the cyclist le 1 Avr 2017
I think they mean that the number 5 is duplicated in the first column, and that the number 1 is duplicated in the fifth column. (Similarly the number 8 is duplicated in the sixth column, and so on.)

Connectez-vous pour commenter.

 Réponse acceptée

If your values are always sorted, as in your example, then I believe this will compactly do what you want:
indexToDuplicates = [nan(1,size(A,2));diff(A)]==0;
A(indexToDuplicates) = 0;
You don't even have to split that into two lines, but I thought it might be clearer what I am doing. You could do
A([nan(1,size(A,2));diff(A)]==0) = 0;

Plus de réponses (0)

Catégories

En savoir plus sur Variables dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by