MATLAB Answers

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

1 view (last 30 days)
Eric Escoto
Eric Escoto on 26 Jul 2019
Commented: Eric Escoto on 26 Jul 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.

  0 Comments

Sign in to comment.

Accepted Answer

the cyclist
the cyclist on 26 Jul 2019
Edited: the cyclist on 26 Jul 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 Comments

Eric Escoto
Eric Escoto on 26 Jul 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 on 26 Jul 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!

Sign in to comment.

More Answers (0)

Products


Release

R2019a

Translated by