Help with calculating median of an array without using built in function?
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Martin Kao
am 26 Mär. 2016
Kommentiert: DGM
am 27 Sep. 2023
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 Kommentare
Akzeptierte Antwort
Roger Stafford
am 26 Mär. 2016
Next step:
n = length(b);
t = (n+1)/2;
md = (b(floor(t))+b(ceil(t)))/2; % <-- median
2 Kommentare
Roger Stafford
am 26 Mär. 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)
Weitere Antworten (2)
Azzi Abdelmalek
am 26 Mär. 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
am 27 Sep. 2023
Heres a quicker way:
sortedvec = sort(vec)
l = length(sortedvec)
x = (l + 1) / 2
median = sortedvec(x)
1 Kommentar
Siehe auch
Kategorien
Mehr zu Logical 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!