Combining two matrices using two criteria

h = [1 4 11;
2 5 12;
4 7 13]
y = [1 4;
2 5;
3 6;
4 7]
I want for each row of matrix y to detect the first two elements in matrix h that are the same as matrix y and then copy the third element of the detected row in matrix h in a new third column in matrix y. The result should be
l = [1 4 11;
2 5 12;
3 6 0;
4 7 13]
I can't figure out the code for this.

2 件のコメント

the cyclist
the cyclist 2016 年 11 月 2 日
Is this homework?
What have your tried?
Mido
Mido 2016 年 11 月 3 日
I am new to MATLAB and I have two large datasets with millions of observations. I want to combine them by transferrring some values from one matrix to another when the first two elements in each row are the same in both. After that, I will get the complete one like l matrix (The last matrix) in my example and then I can do analysis.

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

 採用された回答

KSSV
KSSV 2016 年 11 月 3 日

1 投票

clc; clear all ;
h = [1 4 11;
2 5 12;
4 7 13] ;
y = [1 4;
2 5;
3 6;
4 7] ;
% check positions of h in y
[val,idx] = ismember(h(:,1:2),y,'rows','legacy') ;
% initilaize required matrix
iwant = zeros(size(y,1),3) ;
iwant(:,1:2) = y ;
iwant(idx,3) = h(:,3)

2 件のコメント

Mido
Mido 2016 年 11 月 3 日
Thanks for you help again. I really appreciate if you recommend a book or a manual that I use to learn MATLAB.

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

質問済み:

2016 年 11 月 2 日

コメント済み:

2016 年 11 月 3 日

Community Treasure Hunt

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

Start Hunting!

Translated by