Help with calculating median of an array without using built in function?
7 views (last 30 days)
Show older comments
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?
0 Comments
Accepted Answer
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
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)
More Answers (2)
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
on 27 Sep 2023
Heres a quicker way:
sortedvec = sort(vec)
l = length(sortedvec)
x = (l + 1) / 2
median = sortedvec(x)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!