How to keep values whose corresponding index is present?

4 views (last 30 days)
Hi all
array1 = {1,1,1,0.92,0.61,0.47,0,0;1.6,1,1,1,0.6,0.5,0.4,0.8};
array2 = {[3,4,5,6];[4,5,7,8]};
I need to keep only those values in array 1 whose corresponding index value is present in array2. e.g. Result may look like this:
ResultantArray = {[1,0.92,0.61,0.47];[1,0.6,0.4,0.8]}
Thanks in advance.

Accepted Answer

Walter Roberson
Walter Roberson on 3 Jan 2018
ResultantArray = arrayfun(@(Row) cell2mat(array1(Row,array2{Row})), (1:size(array1,1)).', 'uniform', 0)

More Answers (1)

Star Strider
Star Strider on 3 Jan 2018
Try this:
array1 = {1,1,1,0.92,0.61,0.47,0,0;1.6,1,1,1,0.6,0.5,0.4,0.8};
array2 = {[3,4,5,6];[4,5,7,8]};
ResultantArray = cellfun(@(idx) array1(:,idx), array2, 'Uni',0);
ResultantArray{1}(1,:)
ResultantArray{2}(2,:)
ans =
1×4 cell array
{[1]} {[0.9200]} {[0.6100]} {[0.4700]}
ans =
1×4 cell array
{[1]} {[0.6000]} {[0.4000]} {[0.8000]}

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!