deleting rows in a matrix?

15 vues (au cours des 30 derniers jours)
JacobM
JacobM le 23 Sep 2016
Commenté : JacobM le 23 Sep 2016
I want to delete corresponded rows in mother matrix x when x2 have duplicated rows, the following code may explain the goal:
x=[1 0 0 1 1;1 0 1 0 1;1 1 0 0 1]; %mother matrix
y=[5 -2 -1 -1 -1];
x2=[];
for k=1:size(x,1)
x2=[x2;x(k,:)*y'];
end
so this code will give x2=[3;3;2] which means row '1' and row '2' are considered the same and I want to use only one row and delete the other, how can I do that?
  1 commentaire
Walter Roberson
Walter Roberson le 23 Sep 2016
Does the order of the rows need to stay the same?

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 23 Sep 2016
[x2u, x2u_idx] = unique(x2, 'stable');
new_x = x(x2u_idx, :);
  1 commentaire
JacobM
JacobM le 23 Sep 2016
Perfect! thanks Walter

Connectez-vous pour commenter.

Plus de réponses (1)

Thorsten
Thorsten le 23 Sep 2016
new_x = x(unique(x2),:);
  3 commentaires
JacobM
JacobM le 23 Sep 2016
x=[1 0 0 1 1;1 0 1 0 1;1 1 0 0 1];
y=[5 -2 -1 -1 -1];
x2=[];
for k=1:size(x,1)
x2=[x2;x(k,:)*y'];
end
[x_val,x_idx]=unique(x2);
for i=1:size(x_idx)
j=x_idx(i);
new_x(i,:)=x(j,:);
end
i did this and it works but looking for simpler code?
JacobM
JacobM le 23 Sep 2016
Thanks Thorsten for your input, it is really appreciated!

Connectez-vous pour commenter.

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by