How to inner join two matrices?

4 views (last 30 days)
Mohammed
Mohammed on 20 Oct 2016
Commented: Mohammed on 21 Oct 2016
I have following two matrices of data that contain three columns each, first two columns are GPS data (latitude, longitude) and the third value is elevation angle. I would like to inner join both tables based on their GPS values to calculate the difference in elevation angle between the two matrices. Here is an example;
tbl1 = [
28.057 -80.621 25.3
......];
tbl2 = [
28.057 -80.624 20.6
28.057 -80.621 20.62
.....];
tbl3 should look like the following:
tbl3 = [
28.057 -80.621 25.3 20.6 4.7];
Any idea on how to join these tables? Cheers!

Accepted Answer

Guillaume
Guillaume on 20 Oct 2016
Edited: Guillaume on 21 Oct 2016
[~, row1, row2] = intersect(tbl1(:, [1 2]), tbl2(:, [1 2]), 'rows');
tbl3 = [tbl1(row1), tbl2(row2, 3)];
tbl3(:, 5) = diff(tbl3(:, [4 3]), [], 2);
This assumes that the GPS values are exactly identical in both matrices or that they're rounded to the same number of decimals in both.
  3 Comments
Guillaume
Guillaume on 21 Oct 2016
Edited: Guillaume on 21 Oct 2016
Sorry, forgot to specify the dimension in diff (and got the wrong column destination). It should have read:
tbl3(:, 5) = diff(tbl3(:, [4 3]), [], 2);
Fixed now.
Mohammed
Mohammed on 21 Oct 2016
Works like charm, however it is missing single parenthesis :). thanks again for sharing your knowledge.
tbl3(:, 5) = diff(tbl3(:, [4 3]), [], 2);

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!