2

I have 2 cell arrays and one matrix. The first cell array called 'all_ids' is a 6650 x 1 cell which contains strings. The second cell array called 'needed_ids' is a subset of 'all_ids' and is 6600 x 1 cell which also contain strings.

The matrix called 'sales_num' is a 6650 x 500 matrix of doubles, the rows in here are related to the rows 'all_ids'. What I want to do is remove some of the rows from 'sales_num'. The rows I want to remove are the rows that are in 'all_ids' but not in 'needed_ids'. Please see example below.

                                                    Result I'm looking for
all_ids      sales_num           needed_ids         sales_num (now altered)
abc1         1                   abc1               1
def1         2                   def1               2
ghi1         7                   jkl1               8
jkl1         8                   mno1               4
mno1         4                   stu1               2
pqr1         12
stu1         2
vwx1         5
Divakar
  • 218,885
  • 19
  • 262
  • 358
mHelpMe
  • 6,336
  • 24
  • 75
  • 150

1 Answers1

4

Use setdiff -

[~,row_ind] = setdiff(all_ids,needed_ids) %// Find rows exclusive to all_ids
sales_num(row_ind,:)=[]; %// Remove rows that match the exclusiveness
Divakar
  • 218,885
  • 19
  • 262
  • 358