how can i store a value of a calculation in a loop

3 visualizaciones (últimos 30 días)
Ketan Bharucha
Ketan Bharucha el 5 de Oct. de 2017
Comentada: jean claude el 8 de Oct. de 2017
Hi I have the following loop.
for k=1:length(hplid)
x=hplid(k);
q=sort(latency(hpl==x));
size(q);
figure;
plot(q,(1:numel(q))/numel(q))
title(['HPL ', num2str(x), ' Latency']);
xlabel('Seconds');
ylabel('% Percentile');
quant=interp1((1:numel(q))/numel(q),q,[.9 .95 .99]);
disp( '90%, 95% and 99% latency');
disp(quant);
end
how can I store the value of quants to an array everytime the loop is exectued. Right quants only store the calculation of the last iteration of the loop.
Thank you
  1 comentario
Jan
Jan el 5 de Oct. de 2017
I have formatted your code using the "{} Code" button.

Iniciar sesión para comentar.

Respuestas (2)

Jan
Jan el 5 de Oct. de 2017
Editada: Jan el 5 de Oct. de 2017
Store the vectors in a matrix using the loop counter as index:
quant = zeros(length(hplid), 3); % Pre-allocate!!!
for k = 1:length(hplid)
...
quant(k, :) = interp1((1:numel(q))/numel(q),q,[.9 .95 .99]);
disp(quant(k, :));
end
Note: The line "size(q);" is useless.
  2 comentarios
Ketan Bharucha
Ketan Bharucha el 5 de Oct. de 2017
I get the following error when I use your solution? any idea?
The following error occurred converting from duration to double: Undefined function 'double' for input arguments of type 'duration'. To convert from durations to numeric, use the SECONDS, MINUTES, HOURS, DAYS, or YEARS functions.
Jan
Jan el 6 de Oct. de 2017
@Ketan: Please post the complete error message and the relevant part of the code. I can neither guess, which line causes the error, nor which variable has the type "duration". Note that the message contains a hint about the solution already.

Iniciar sesión para comentar.


jean claude
jean claude el 5 de Oct. de 2017
try this put it just before end of the loop
quantvalue=[];
quantvalue=[quantvalue quant];
  2 comentarios
Walter Roberson
Walter Roberson el 5 de Oct. de 2017
This works, but is not efficient. Each time something is added on to the end of quantvalue, MATLAB has to look for new memory long enough to store the combined results, and copy the existing quantvalue over and then copy in the new values, and then throw away the existing quantvalue. When possible, it is much more efficient to allocate the memory to store all of the results and write them in as you go.
jean claude
jean claude el 8 de Oct. de 2017
yes that's totally right it's better to preallocate!

Iniciar sesión para comentar.

Categorías

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

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by