Help with calculating median of an array without using built in function?
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Martin Kao
el 26 de Mzo. de 2016
Comentada: DGM
el 27 de Sept. de 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 comentarios
Respuesta aceptada
Roger Stafford
el 26 de Mzo. de 2016
Next step:
n = length(b);
t = (n+1)/2;
md = (b(floor(t))+b(ceil(t)))/2; % <-- median
2 comentarios
Roger Stafford
el 26 de Mzo. de 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)
Más respuestas (2)
Azzi Abdelmalek
el 26 de Mzo. de 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
el 27 de Sept. de 2023
Heres a quicker way:
sortedvec = sort(vec)
l = length(sortedvec)
x = (l + 1) / 2
median = sortedvec(x)
1 comentario
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!