MATLAB: Retrieving Rows based on Multiple Columns

cell arrays

Suppose,
var1=[ 1 1 3 4 5
2 14 15 16 17];
var2= { 1 5 6 7
3 7 6 5
4 2 5 9
2 1 5 7
5 3 1 6
15 4 9 1
18 5 1 3
17 8 7 4
16 6 6 3
14 2 1 2 };
Based on var1(Column 2,3,4,5), I want to retrieve rows in var2 which corresponds to var1 (Column 2,3,4,5)
Desired Result:
Result{1}
1 5 6 7
3 7 6 5
4 2 5 9
5 3 1 6
Result{2}
15 4 9 1
17 8 7 4
16 6 6 3
14 2 1 2

Best Answer

c=cell2mat(var2(:,1));
idx=arrayfun(@(x) find(ismember(c,x))',var1(:,[2 3 4 5]),'un',0)
idx1=arrayfun(@(x) cell2mat(idx(x,:))',[1:size(var1,1)]','un',0)
result=cellfun(@(x) var2(x,:),idx1,'un',0)
result{1}
result{2}