Modify matrix of long length to match another using unique datum values

1 vue (au cours des 30 derniers jours)
Eric Escoto
Eric Escoto le 26 Juil 2019
Commenté : Eric Escoto le 26 Juil 2019
Hello,
I have two matrices that are different lengths. Each of these matrices has a matching datenum value and record number in the first and second column, respectively.
I am trying to reduce rows of one matrix to the other by removing all rows that don't have matching datnum values.
Some basic and short example data similar to what I'm working with:
matrix1 = [datenum_A recordnumber_C value value value value; datenum_B recordnumber_C value value value value; datenum_C recordnumber_C value value value value];
matrix2 = [datenum_A recordnumber_C value value value value; datenum_B recordnumber_C value value value value; datenum_C recordnumber_C value value value value; datenum_D recordnumber_D value value value value; datenum_E recordnumber_E value value value value; datenum_F recordnumber_F value value value value];
In this case, I would like to remove the last three rows of data from matrix2 becasue the matching datenum and recordnumbers are not in matrix1.
The goal is to have two matrices that are exactly the same row count.
Any help would be greatly appreciated.

Réponse acceptée

the cyclist
the cyclist le 26 Juil 2019
Modifié(e) : the cyclist le 26 Juil 2019
Sounds like you need the ismember command, possibly with the 'rows' argument.
The exact thing you want to do (matches only in first column, or in both?) was not quite clear to me. But you'll need something like
tf = ismember(matrix2(:,1),matrix1(:,1));
to identify the elements of the first column of matrix2 that are also in matrix1.
  2 commentaires
Eric Escoto
Eric Escoto le 26 Juil 2019
Hi Cyclist,
To clarify, I can use either datenum or a combination of datenum and record number. However, it is much simpler to just use datenum.
Your method produced a logical and let me know what rows are or are not similar. How can I now remove these rows from the longer matrix in question?
Eric Escoto
Eric Escoto le 26 Juil 2019
Ah, I think I got it.
I used:
tf_1 = matrix2(tf, :);
This seemed to have produced the correct size matrix matching matrix1.
Thanks for the help!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Dates and Time dans Help Center et File Exchange

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by