Why doesn't my code return the correct value when I try to find the average of the values greater than 0?

4 visualizaciones (últimos 30 días)
Hi,
I'm trying to find the average of the values that are greater than 0 and the average of values less than 0. I wrote the following code:
sample = xlsread('sample.xlsx', 1); %Download spreadsheet to MATLAB
avgGreaterThan0 = mean(sample(:)>0); %finds the average of values > 0
avgLessThan0= mean(sample(:)<0); %finds the average of values < 0
The outputs are, 0.232876712328767 (avg. when values > 0) and 0.767123287671233 (avg. when values < 0). However I preformed the task manually to find it should be 0.132517148 (avg. when values > 0) and -0.043091451 (avg. when values < 0.)
Could you please help me with my code?
Best, A

Respuesta aceptada

Jan
Jan el 8 de Mzo. de 2017
sample(:)>0 replies a logical array. Then mean(sample(:)>0) calculates the average number of the elements greater than 0, not the average of the values itself. For this use:
avgGreaterThan0 = mean(sample(sample(:) > 0));
avgLessThan0 = mean(sample(sample(:) < 0));
  3 comentarios
Image Analyst
Image Analyst el 8 de Mzo. de 2017
Then you didn't use Jan's code. Here's proof Jan's code works:
sample = randi(100, 1, 1000) - 50
avgGreaterThan0 = mean(sample(sample(:) > 0))
avgLessThan0 = mean(sample(sample(:) < 0))
See results:
avgGreaterThan0 =
25.729
avgLessThan0 =
-24.485

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Get Started with MATLAB 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