Maximum value in a vector
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
NT
el 23 de Mzo. de 2016
Comentada: sunil shetty
el 17 de Mayo de 2019
Problem statement: Use the max function to find the value and location of the maximum y value. Use fprintf to show the maximum y and the x value for which it occurs. When I use the max function it always returns -1?
x = [linspace(-pi,pi,10)]
n = [length(x)];
for i = 1:n
fprintf(' %.0f: %f ', i, x(i))
end
for i = 1:n
y = [cos(x(i))];
fprintf(' %f ',y)
end
max(y)
0 comentarios
Respuesta aceptada
Stephen23
el 23 de Mzo. de 2016
Editada: Stephen23
el 23 de Mzo. de 2016
The problem is that you don't have a vector, although you think that you do. Actually y is a scalar value -1, so of course min(-1) will give you that output. This happens because you simply reallocate y on every loop iteration, so at the end of the loop it only has the last value. You could use indexing to fix this.
A much better way to solve this problem is entirely without loops:
>> X = linspace(-pi,pi,10);
>> Y = cos(X);
>> [maxY,idx] = max(Y);
>> maxX = X(idx)
maxX = -0.34907
>> maxY
maxY = 0.93969
Loops are often an inefficient way of solving problems in MATLAB.
3 comentarios
Stephen23
el 23 de Mzo. de 2016
Like I said: use indexing to store the y values in the loop. Then apply max after the loop. Indexing is covered in thousand of tutorials online, so you won't have any problem with that.
sunil shetty
el 17 de Mayo de 2019
Hi ,
Is this solution applicable for 2D or 3D vector ?
Thanks & Regards ,
Sunil
Más respuestas (0)
Ver también
Categorías
Más información sobre Startup and Shutdown 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!