Find equal elements between two matrices

29 ビュー (過去 30 日間)
Paschalis Garouniatis
Paschalis Garouniatis 2016 年 7 月 3 日
Greetings everyone. I have two matrices (x,y data) which have different size (1044x2 and 952x2). I want to find the elements (all from the first column, x data) that co-exist in them. Then I will create two new matrices where the first column will consist of those elements and the second column will consist of the y data from each former matrix that correspond to the elements mentioned. Below I have included the code that I used which resulted to only one (the last) element which is same for both. My mistake is that the variables MyMatrix3 and MyMatrix4 are not stated as matrices and so the result is what it should be expected. I am a bit confused about how to state them as matrices. Any help? Thanks in advance.
for i=1:length(MyMatrix1)
for j=1:length(MyMatrix2)
if (MyMatrix1(i,1)==MyMatrix2(j,1))
MyMatrix3=[MyMatrix1(i,1) MyMatrix1(i,2)];
MyMatrix4=[MyMatrix2(j,1) MyMatrix2(j,2)];
end
end
end
  2 件のコメント
dpb
dpb 2016 年 7 月 3 日
"create two new matrices where ... the second column will consist of the y data from each former matrix that correspond to the elements mentioned."
Huh??? What does this mean, precisely? Give a short example dataset with the input, desired output, and rules by which the latter was obtained from the former.
I'm guessing all you really need is the outputs from
ismember(A(:,1), B(:,1))
but need an example to clarify what it is you really want. Can undoubtedly be as short as 5 or 6 elements to illustrate.
Paschalis Garouniatis
Paschalis Garouniatis 2016 年 7 月 3 日
編集済み: Paschalis Garouniatis 2016 年 7 月 3 日
Thanks a lot for your response dpb. Let's say that I have 2 matrices: a=[4 3;1 2;10 11;5 7] and b=[1 3;10 21;6 6;3 7]. I want to create two new matrices which will have same first column and the second column will be the one that corresponds to the former matrix. So the matrices I want to create would be: c=[1 2;10 11] and d=[1 3;10 21].

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

採用された回答

Andrei Bobrov
Andrei Bobrov 2016 年 7 月 3 日
編集済み: Andrei Bobrov 2016 年 7 月 3 日
a=[4 3;1 2;10 11;5 7] , b=[1 3;10 21;6 6;3 7];
[lo , ii] = ismember(a(:,1),b(:,1));
out = {a(lo,:), b(ii(lo),:)};
or
ij = bsxfun(@eq,a(:,1),b(:,1)');
out = {a(any(ij,2),:), b(any(ij),:)};
  1 件のコメント
Paschalis Garouniatis
Paschalis Garouniatis 2016 年 7 月 3 日
Andrei thanks a lot for your response. It worked just fine!

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by