Maximum value in a vector
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
NT
am 23 Mär. 2016
Kommentiert: sunil shetty
am 17 Mai 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 Kommentare
Akzeptierte Antwort
Stephen23
am 23 Mär. 2016
Bearbeitet: Stephen23
am 23 Mär. 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 Kommentare
Stephen23
am 23 Mär. 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
am 17 Mai 2019
Hi ,
Is this solution applicable for 2D or 3D vector ?
Thanks & Regards ,
Sunil
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!