How to keep values whose corresponding index is present?
    5 views (last 30 days)
  
       Show older comments
    
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.
0 Comments
Accepted Answer
  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
      
      
 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]}
See Also
Categories
				Find more on Matrices and Arrays in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

