How can I store index number and value from a for loop and a problem with optimization

2 visualizaciones (últimos 30 días)
My problem is two-fold;
I am attempting to store the minimum value from each row of a matrix that is 3x4193 in dimensions;
for i = 1:3
tmp(i) = rand;
dummy(i,:) =(abs(tmp(i) - cumsum_pdf_x));
[val ind] = min(dummy(i,:));
end
I have used to above code but it only gives me min value and corresponding index for one of the rows. How can I get and store the values for all three? Also I then have to increase i to 2915, how can I optimize my code so that it does this easily as it is at the moment causing matlab to crash?
Many thanks in advance :D

Respuestas (2)

Azzi Abdelmalek
Azzi Abdelmalek el 30 de Abr. de 2013
Editada: Azzi Abdelmalek el 30 de Abr. de 2013
for i = 1:3
tmp(i) = rand;
dummy(i,:) =abs(tmp(i) - cumsum_pdf_x);
[val1 ind1] = min(dummy(i,:));
val(i)=val1;
ind(i)=ind1
end

Matt J
Matt J el 30 de Abr. de 2013
Editada: Matt J el 30 de Abr. de 2013
Do the minimization outside the loop, in vectorized fashion.
for i = 1:3
tmp(i) = rand;
dummy(i,:) =abs(tmp(i) - cumsum_pdf_x);
end
[val,ind] = min(dummy,[],2);
As for the "crash", we need to see error messages to diagnose that.

Categorías

Más información sobre Loops and Conditional Statements 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