Combining two matrices using two criteria

1 vue (au cours des 30 derniers jours)
Mido
Mido le 2 Nov 2016
Commenté : Image Analyst le 3 Nov 2016
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 commentaires
the cyclist
the cyclist le 2 Nov 2016
Is this homework?
What have your tried?
Mido
Mido le 3 Nov 2016
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.

Connectez-vous pour commenter.

Réponse acceptée

KSSV
KSSV le 3 Nov 2016
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 commentaires
Mido
Mido le 3 Nov 2016
Thanks for you help again. I really appreciate if you recommend a book or a manual that I use to learn MATLAB.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by