How to remove repeating elements from an array
Mostrar comentarios más antiguos
Hi Guys,
I have two matrices X and Y of the same size. Each element in Y has a corresponding element in X. There are some repeating values in X (and correspondingly in Y as well). Is there any way to remove these elements from the matrices.
Thanks, NS
2 comentarios
Hesham Hendy
el 22 de Nov. de 2014
If I want to keep one value of repeated values without sorting, what can I do ???
Image Analyst
el 22 de Nov. de 2014
Start a new question and give a small example.
Respuesta aceptada
Más respuestas (4)
UJJWAL
el 25 de Sept. de 2011
1 voto
Use the unique function. Take the following example :-
a = randi(10,[1,20]) will display a 1 by 20 matrix of pseudorandom integers with uniform distribution in the range 1:10 . Obviously there will be repeated elements in the matrix. Suppose now you create a second matrix p = sin(a). So there is a mapping defined. Now type unique(a). It will give you only the unique values in a that is it will not display repeated values of the same element. Now type unique(p) : It will similarly display the unique values in p.
Hope it resolves your doubt
Best Wishes
Ujjwal
Fangjun Jiang
el 26 de Sept. de 2011
For duplicated x-y pairs, if you want to keep the last one:
X=[0 13 22 18 22 22 10];
Y=[0 1 3 -1 3 3 -1];
A=[X;Y]';
[UniXY,Index]=unique(A,'rows');
DupIndex=setdiff(1:size(A,1),Index);
A(DupIndex,:)=[];
X=A(:,1)'
Y=A(:,2)'
X =
0 13 18 22 10
Y =
0 1 -1 3 -1
If you want to keep the first one, use:
[UniXY,Index]=unique(A,'rows','first');
1 comentario
Aidin Golrokh
el 18 de Jul. de 2018
For a big matrix, this code will produce repeating numbers.
SIVAKUMAR KARURNKARAN
el 20 de Mayo de 2015
function B=adjacentmat(n,e) R=combntns(1:n,2); k=1:e; r=nchoosek(n,2); B=zeros(n,n,r,r);
for i=1:r for j=1:r R([i j],:)=R([j i],:); F=R(k,:); A=zeros(n,n); for m =1:e; A(F(m,1),F(m,2))=1; A(F(m,2),F(m,1))=1;
end
B(:,:,i,j)=A;
end
end
return in this output has more duplicate matrices i want only distinct matrices. i need the code of comparing the matrices and find which is distinct
Ismet Ozturk
el 29 de Mzo. de 2018
Editada: Ismet Ozturk
el 29 de Mzo. de 2018
function [ a ] = deleteRepetation( a )
leng=size(a);tempa=zeros(1,2);
for i=1:leng(1)
tempa=a(i,:);
tempa=sort(tempa);
a(i,:)=tempa;
end
deletionList=[1];
while size(deletionList)>0
deletionList=[];leng=size(a);
for i=1:leng(1)
tempa=a(i,:);
for j=i+1:leng(1)
if tempa==a(j,:)
deletionList=[deletionList j];
end
end
end
a(deletionList,:)=[];
end
1 comentario
Life is Wonderful
el 12 de Abr. de 2020
Couple of things noted and suggestion added for the above code
Code point-1
tempa=sort(tempa);
Replace with
tempa=sortrows(tempa);
Code point-2
if tempa==a(j,:) %might NOT always work for Tables
Replace with
if isequal(tempa,a(j,:)) % better implementation
Categorías
Más información sobre Creating and Concatenating Matrices en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!