How can I use "IF" statement to prevent adding same element to an array?

Hello,
So I have a matrix A
A = [ 1 2 3;
2 3 4;
4 5 6]
I create another matrix B where B =[] and the element in B will be added from A. Matrix B becomes
B = [ 1 2;
2 3;
3 1;
2 3;
3 4;
4 2]
The forloop technically go through each row of A to pick the elements for each row of B. B is nx2 matrix. As we can see, "2 3" is repeated. I want to make an If statement that prevent adding existing row in B.
Please help, thank you so much.

 채택된 답변

the cyclist
the cyclist 2019년 11월 15일
편집: the cyclist 2019년 11월 15일
Would it be acceptable to just remove duplicated rows after-the-fact? If so, you could do
B = unique(B,'rows');
It seems likely that this would be more efficient than checking each row against all prior rows, while B is being constructed.

댓글 수: 5

Thank you for the advice. But I forgot to say that if there is "1 2" I can't have either "1 2" or "2 1". Unique command only remove "1 2" for existing "1 2" in B. Sorry for not being clear in the question.
Would the following be acceptable?
B = unique(sort(B,2),'row');
This would reduce
[1 2;
2 1]
to just
[1 2]
which seems to be what you want. However, it would also change just
[2 1]
to
[1 2]
even though [1 2] was never present in the first place. Is that OK?
Thank you for the advice. So the 'sort' command will organize the rows in B to be somewhat the same to the existing ones, and then 'unique' will remove them, right? I tried it in my code and it works perfectly. I will try more different input to see if it holds the goal consistently. Thank you very much !
I don't know what you mean by "somewhat the same to the existing ones". So, let's be specific.
sort will take each row, and put it in ascending numerical order. Therefore the row [2 1] and the row [1 2] will both become [1 2]. That way, unique keeps only one of those rows.
Thank you sir, that totally works and very simple and effective.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

질문:

2019년 11월 15일

댓글:

2019년 11월 18일

Community Treasure Hunt

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

Start Hunting!

Translated by