How to keep values whose corresponding index is present?

2 vues (au cours des 30 derniers jours)
lucksBi
lucksBi le 3 Jan 2018
Commenté : lucksBi le 3 Jan 2018
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.

Réponse acceptée

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

Plus de réponses (1)

Star Strider
Star Strider le 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]}
  1 commentaire
lucksBi
lucksBi le 3 Jan 2018
Thanks alot for answer. This also works.
Thank You

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by