Extract rows with a range of values

I have two tables. The first table (tab1) has column with ids. We call it ID. The second table (tab2) also has ids which is called ID as well. I am trying to extract all the rows in tab2 that has at least one match of ID from tab1. Following is what I have tried:
rev_table=tab2(tab1.ID,:);
Could someone help please?

2 Comments

Are these large tables? There are some direct methods that can vectorize but which take a fair bit of memory.
No. The tables are not large.

Sign in to comment.

Answers (1)

mask = any(any(tab2{:,:} == reshape(tab1.ID, 1, 1, []),3),2);
selected_rows = tab2(mask,:);
Requires R2016b or later in the form written.

Categories

Tags

Asked:

on 26 Jun 2019

Answered:

on 26 Jun 2019

Community Treasure Hunt

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

Start Hunting!