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

10 visualizaciones (últimos 30 días)
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?

Respuesta aceptada

Roger Stafford
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
Martin Kao
Martin Kao el 26 de Mzo. de 2016
Thank you so much! What would the steps look like if there were an even number of terms?
Roger Stafford
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)

Iniciar sesión para comentar.

Más respuestas (2)

Azzi Abdelmalek
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
William el 27 de Sept. de 2023
Heres a quicker way:
sortedvec = sort(vec)
l = length(sortedvec)
x = (l + 1) / 2
median = sortedvec(x)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by