Extract values from vector with cell indices

Hello guys,
i created a cell, with indices in the fields.
c=cell(2,2);
c{1,1}=[1,2,3];
c{2,1}=[7,8];
c{1,2}=[1,4];
c{2,2}=[3,5];
The goal is to extract and sum up values from another vector at this indices.
data=(1:10)';
The result should be a matrix (2x2, same size like c) with the results in it.
Pseudocode:
results(1,1)=sum(cell{1,1})=1+2+3
results(2,1)=sum(cell{2,1})=7+8
... and so on...
But this should be done automatically without a loop over the fields of the cell.

 Respuesta aceptada

madhan ravi
madhan ravi el 21 de Jul. de 2020
cellfun(@sum,c)

4 comentarios

Marc Gebhardt
Marc Gebhardt el 21 de Jul. de 2020
Well, this works, if data is 1,2,3,.. but not for random numbers or other values in data
May this works...
cellfun(@(x) sum(data(x)),c,'UniformOutput',false)
madhan ravi
madhan ravi el 21 de Jul. de 2020
Mine works if the cell contains 1d vector, if otherwise you need to set the uniformoutput to false.
Well your pseudo-code does not depend on DATA, and it's confusing to select DATA example that has value==indice.
cellfun(@(i) sum(data(i)), c)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Preguntada:

el 21 de Jul. de 2020

Comentada:

el 21 de Jul. de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by