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

Walter Roberson
Walter Roberson 2016년 9월 23일
Does the order of the rows need to stay the same?

댓글을 달려면 로그인하십시오.

 채택된 답변

Walter Roberson
Walter Roberson 2016년 9월 23일

0 개 추천

[x2u, x2u_idx] = unique(x2, 'stable');
new_x = x(x2u_idx, :);

추가 답변 (1개)

Thorsten
Thorsten 2016년 9월 23일

0 개 추천

new_x = x(unique(x2),:);

댓글 수: 3

JacobM
JacobM 2016년 9월 23일
편집: JacobM 2016년 9월 23일
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?
JacobM
JacobM 2016년 9월 23일
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 2016년 9월 23일
Thanks Thorsten for your input, it is really appreciated!

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

질문:

2016년 9월 23일

댓글:

2016년 9월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by