MATLAB: How Detect duplicate value in each column and replace one value with zero

duplicate value column

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 one of duplicated values with 0 i tried this but not give correct answer diffrent=find(diff(A(1:4,:))==0); A(diffrent)=zeros(size(diffrent));

Best Answer

Aout = [true(1,size(A,2));diff(A)~=0].*A;
or for matrix not sorted by columns:
[m,n] = size(A);
[A1,ii] = sort(A);
[~,i1] = sort(ii);
A2 = [true(1,n);diff(A1)~=0].*A1;
Aout = A2(sub2ind([m,n],i1,repmat(0:n-1,m,1));