Indexing through a cell array

2 visualizaciones (últimos 30 días)
Hari krishnan
Hari krishnan el 23 de Sept. de 2021
Comentada: Jan el 23 de Sept. de 2021
I am looking to populate cell array named 'age_list' based on the values i have in two columns; named 'day' and 'pop'
  • For each specific 'day', i am looking at the corresponding 'pop' value and then update the 'age_list' based on it.
  • Example: On day 4, the population is 3. Therefore the cell array 'age_list' will have 'three' values with the {2,3,4}.
Can anyone suggest me on how to perform this? Any help will be appreciated.
  6 comentarios
Jan
Jan el 23 de Sept. de 2021
Editada: Jan el 23 de Sept. de 2021
Is day in all cases 1:numel(day) ? Can the population size shrink? Is {1} a fixed startpoint?
Hari krishnan
Hari krishnan el 23 de Sept. de 2021
Yes, day in all cases is 1:numel(day).
The population size cannot shrink.
{1} is a fixed starting point.

Iniciar sesión para comentar.

Respuesta aceptada

Jan
Jan el 23 de Sept. de 2021
A bold try:
day = 1:7;
pop = [1,2,3,3,3,4,6];
age_list = cell(1, numel(day));
age_list{1} = 1; % Is this given?!
for k = 2:numel(day)
new = pop(k) - pop(k - 1);
age_list{k} = cat(2, repmat(age_list{1}, 1, new), age_list{k-1} + 1);
end
age_list
age_list = 1×7 cell array
{[1]} {[1 2]} {[1 2 3]} {[2 3 4]} {[3 4 5]} {[1 4 5 6]} {[1 1 2 5 6 7]}
  2 comentarios
Hari krishnan
Hari krishnan el 23 de Sept. de 2021
Editada: Hari krishnan el 23 de Sept. de 2021
Thank you very much for the suggestion.
I would like to clarify an issue, if the length of days and pop is not equal, how will this work.
For example;
day = 1:178;
pop = [2,30,30,37,39,55,69,70,72,77,78,78,89,90,96,98,98,103,103,106,107,121,178];
Jan
Jan el 23 de Sept. de 2021
I cannot guess, what you expect as output in this case.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by