MATLAB Answers

Finding min and max of an element without using builtin function

7 views (last 30 days)
ahmed yacine LARDJANE
ahmed yacine LARDJANE on 30 Nov 2020
Hello,
i'm new to matlab, and i want to create a function which will get me the min and max of a value and their indices, without using the builtin function,
i'm thinking of sorting the array and just get value of first and last elements but i don"t know if it's a good solution
i'm waiting for your contributions
Kindly

  0 Comments

Sign in to comment.

Answers (2)

John D'Errico
John D'Errico on 30 Nov 2020
You are missing the point here. This is an exercise. The intent is for you to find a solution that does not use max or min.
Does sort serve the purpose? (Yes, quite well.)
Does sort do more work than max or min would perform? (Yes.)
Do you care? (No.)
Your goal was not to find some solution that you think to me optimally elegant, was it? The elegant solution is to use max and min, that is, to use the code provided which is maximally on-target. Suppose instead, you found some tool that took an array and directly returns the min and max of the vector? Almost certainly, that tool will just use min and max internally.
Sort is a good solution, and you are overthinking the problem.

  4 Comments

Show 1 older comment
John D'Errico
John D'Errico on 30 Nov 2020
As Jan said, just try it. Make up some data, Then see how sort works. This is how you will learn.
V = rand(1,5)
V = 1×5
0.9795 0.9945 0.6675 0.1575 0.9903
[sortedV,tags] = sort(V)
sortedV = 1×5
0.1575 0.6675 0.9795 0.9903 0.9945
tags = 1×5
4 3 1 5 2
Now, what does sortedV(1) and sortedV(end) give you? Remember, that sort performs a sort in increasing order.
To find the index of those elements, what would tags(1) and tags(end) tell you?
To learn MATLAB, get your hands dirty. Get into the sandbox and play around. You seem reluctant to do that, wanting to know the optimal answer before you try anything. Computing is not that way. An answer is all you ever need, as long as the answer can be obtained as quickly as you need it.
ahmed yacine LARDJANE
ahmed yacine LARDJANE on 4 Dec 2020
hello,
this is what i did so far
a=[15;32;5;6];
for i=1:size(a)
if a(i+1) >= a(i)
casemin=(i);
valeurmin= a(i);
end
if a(i+1) <= a(i)
casemax =(i);
valeurmax = a(i);
end
end
where case and valeur means, index and value, the code works i see the value in the workspace, but with a problem " Index exceeds matrix dimensions " in commande window, can someone help me with this? i'm really new to programming and matlab.
thanks for your help and your time

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!

Translated by