MATLAB: Removing repeated numbers in a matrix

remove duplicates matrix

Ex: In a matrix
A = [9 9 1 1 2 2 2 2 2 0 3 3; 7 7 4 4 4 5 5 6 6 6 6 6 ; 8 8 7 7 7 8 8 8 9 9 9 5]
, i want to eliminate all repeating elements and retain non-repeating elements
i.e. from the above example
A = [9 1 2 0 3 ; 7 4 5 6 ; 8 7 8 9 5]
To prevent a dimensions error because of different output results, the remaining entries on the left can be filled by zero like here
A = [9 1 2 0 3 ; 7 4 5 6 0 ; 8 7 8 9 5]

Best Answer

>> A = [9,9,1,1,2,2,2,2,2,0,3,3;7,7,4,4,4,5,5,6,6,6,6,6;8,8,7,7,7,8,8,8,9,9,9,5]
A =
9 9 1 1 2 2 2 2 2 0 3 3
7 7 4 4 4 5 5 6 6 6 6 6
8 8 7 7 7 8 8 8 9 9 9 5
>> X = diff(A(:,[1,1:end]),1,2)~=0;
>> X(:,1) = true;
>> S = size(A);
>> [R,~] = ndgrid(1:S(1),1:S(2));
>> C = cumsum(+X,2);
Method one: accumarray:
>> B = accumarray([R(:),C(:)],A(:),[],@mode,0)
B =
9 1 2 0 3
7 4 5 6 0
8 7 8 9 5
Method two: indexing:
>> B = zeros(S(1),max(C(:)));
>> B(sub2ind(S,R,C)) = A
B =
9 1 2 0 3
7 4 5 6 0
8 7 8 9 5