Help with calculating median of an array without using built in function?

7 views (last 30 days)
A=[8 6 7 5 3 0 9]
b=sort(A)
b= 0 3 5 6 7 8 9
Now what are the next steps?

Accepted Answer

Roger Stafford
Roger Stafford on 26 Mar 2016
Next step:
n = length(b);
t = (n+1)/2;
md = (b(floor(t))+b(ceil(t)))/2; % <-- median
  2 Comments
Martin Kao
Martin Kao on 26 Mar 2016
Thank you so much! What would the steps look like if there were an even number of terms?
Roger Stafford
Roger Stafford on 26 Mar 2016
Same formula works for odd and even numbers:
1. even, say, n = 10, t = (10+1)/2 = 5.5, floor(t) = 5, ceil(t) = 6,
md = (b(5)+b(6))/2 (average of middle two values)
2. odd, say, n = 13, t = (13+1)/2 = 7, floor(7) = 7, ceil(7) = 7,
md = (b(7)+b(7))/2 = b(7) (center value)

Sign in to comment.

More Answers (2)

Azzi Abdelmalek
Azzi Abdelmalek on 26 Mar 2016
use n=numel(A) to get the number of element in A. If n is odd, the median will be b((n+1)/2), if n is even, try to find out.

William
William on 27 Sep 2023
Heres a quicker way:
sortedvec = sort(vec)
l = length(sortedvec)
x = (l + 1) / 2
median = sortedvec(x)

Community Treasure Hunt

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

Start Hunting!