Info

La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.

Can you help with logic behind this problem? Iterations

1 visualización (últimos 30 días)
Priya
Priya el 26 de Mayo de 2013
Cerrada: MATLAB Answer Bot el 20 de Ag. de 2021
I have a cell array as follows:
no. of columns = 3 and no. of rows = 800
First Column - Serial No
Second Column - Character
Third Column - Number
cell = {1 'N' 1.2 ; 2 'B' 3.2 ; 3 'D' 5.3 ; 1 'N' 1.2 ; 2 'A' 3.2 ; 3 'G' 5.3 ; 1 'E' 1.2 ; 2 'F' 3.2 ; 3 'G' 5.3 ; 1 'N' 1.2 ; 2 'C' 3.2 ; 3 'D' 5.3 ; 1 'H' 1.2 ; 2 'B' 3.2 ; 3 'D' 5.3 ; 1 'N' 1.2 ; 2 'B' 3.2 ; 3 'E' 5.3 ....................}
In second column character 'N' repeats after certain entries (rows).
I want to add the numbers in third coulmn from the row with 'N' in second column till the rows before next 'N' appears in second row.
  2 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 26 de Mayo de 2013
What should be the result?
Jan
Jan el 26 de Mayo de 2013
"cell" is an important Matlab command. Using this term as a name of a variable shadows the built-in function and this causes troubles frequently.

Respuestas (1)

Azzi Abdelmalek
Azzi Abdelmalek el 26 de Mayo de 2013
idx1=find(cellfun(@(x) isequal(x,'N'),cell(:,2)));
idx2=[idx1(2:end)-1; size(cell,1)];
for k=1:numel(idx1)
h{k}=cellfun(@(x) x+cell{idx1(k),3},cell(idx1(k):idx2(k),3));
end
h=cell2mat(h');
cell(:,3)=num2cell(h(:));
  1 comentario
Jan
Jan el 26 de Mayo de 2013
What about this for getting idx1:
idx1 = find(strcmp(c(:, 2), 'N'));

La pregunta está cerrada.

Community Treasure Hunt

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

Start Hunting!

Translated by