Can you help with logic behind this problem? Iterations
Información
La pregunta está cerrada. Vuélvala a abrir para editarla o responderla.
Mostrar comentarios más antiguos
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
el 26 de Mayo de 2013
What should be the result?
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
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
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!