intersect(A,B) returns the data with no repetitions

1 回表示 (過去 30 日間)
want2know
want2know 2013 年 10 月 16 日
コメント済み: want2know 2013 年 10 月 21 日
Dear Sir/Madam,
I was using "intersect" in my Matlab code where I want the following:
A = [ 4 1 1 2 3];
[B] = sort(A, 'ascend'); % so that B is sorting A in ascending order, so I got B = [1 1 2 3 4]
[same,a] = intersect(B,A);
I want same = [1 1 2 3 4] but the simulation gives me same = [1 2 3 4] by omitting the repeated '1'.
I understand by using intersect it will return data with no repetition
C = intersect(A,B) returns the data common to both A and B with no repetitions.
I want it to show the complete data including those repetition, what are the alternatives I can use rather than the function "intersect"?
For example:
A = [ 4 1 1 2 3];
[B] = sort(A, 'ascend'); % so that B is sorting A in ascending order, so I got B = [1 1 2 3 4]
[same,a] = intersect(B,A);
So now I want it to be like this same =[1 1 2 3 4] and a=[2 3 4 5 1].
I need to access ‘a’ where ‘a’ shows the original index prior to sorting so I can use it for further processing.
Thank you very much.

採用された回答

Jos (10584)
Jos (10584) 2013 年 10 月 16 日
I think you are looking for the second output of SORT
A = [ 4 1 1 2 3]
[B, ix] = sort(A, 'ascend')
Now, B equals A(ix)
  1 件のコメント
want2know
want2know 2013 年 10 月 21 日
Thanks a lot, it is working now, you are absolutely right, sorry for making such silly mistake.

サインインしてコメントする。

その他の回答 (2 件)

Laurent
Laurent 2013 年 10 月 16 日
You can use the function 'ismember' for this purpose.
From the help:
LIA = ismember(A,B) for arrays A and B returns an array of the same
size as A containing true where the elements of A are in B and false
otherwise.
  1 件のコメント
want2know
want2know 2013 年 10 月 16 日
編集済み: want2know 2013 年 10 月 16 日
Dear Laurent,
Thanks so much for your reply. Sorry that I should have made it clearer: The below shows details:
A = [ 4 1 1 2 3];
[B] = sort(A, 'ascend'); % so that B is sorting A in ascending order, so I got B = [1 1 2 3 4]
[same,a] = intersect(B,A);
So now I want it to be like this same =[1 1 2 3 4] and a=[2 3 4 5 1].
I need to access ‘a’ where ‘a’ shows the original index prior to sorting so I can use it for further processing.
I hope I make myself clear this time, thank you very much.

サインインしてコメントする。


Jos (10584)
Jos (10584) 2013 年 10 月 16 日
I do not get it. Will same not always be exactly B?
  1 件のコメント
want2know
want2know 2013 年 10 月 16 日
Sorry Jos, I should have made it clearer, please refer to my edited question, thanks for your time

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by