deleting rows in a matrix?

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 Commento

Walter Roberson
Walter Roberson il 23 Set 2016
Does the order of the rows need to stay the same?

Accedi per commentare.

 Risposta accettata

Walter Roberson
Walter Roberson il 23 Set 2016
[x2u, x2u_idx] = unique(x2, 'stable');
new_x = x(x2u_idx, :);

Più risposte (1)

Thorsten
Thorsten il 23 Set 2016
new_x = x(unique(x2),:);

3 Commenti

JacobM
JacobM il 23 Set 2016
Modificato: JacobM il 23 Set 2016
I thought of this too but this command would remove the rows in x2 but not x, I want to remove the rows in x that corresponds to duplicated one in x2. and also the problem is that, the number of rows in x is not fixed and it may increase or decrease. so I want to have the code generalised.
I thought also of using the for loop but it would take more time for big matrix,
what do you think?
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 il 23 Set 2016
Thanks Thorsten for your input, it is really appreciated!

Accedi per commentare.

Categorie

Community Treasure Hunt

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

Start Hunting!

Translated by