How can you determine the mean and standard deviation on a polar histogram?

8 visualizaciones (últimos 30 días)
Hello,
I am currently trying to find mean and standard deviation of my data during cycling. Each partcipant has 30 revolutions of pedaling and I found the angles where the peak values occur in each revolution. For some variables, the angles are distributed from mid 300 degrees to 90 degrees, which will be cancelled out when you just take the mean. So, I was wondering if there is any way to calculate the mean without cancelling out. I have attached sample data and figure below:
load example
min(example)
ans = 0
max(example)
ans = 6.2832
polarhistogram(example,'BinWidth',deg2rad(10))
set(gca,'ThetaZeroLocation','top','ThetaDir','clockwise')
If you have any suggestions or insights, please let me know. Thank you.
  3 comentarios
Youngmin
Youngmin el 28 de Feb. de 2024
@VBBV Thank you for your comment. Of course, I can tell you more about it. As you can see in the example data above, the maximum peak angle is 6.283 rad but the minimum peak angle is 0 rad. Given that the data was obtained during 30 consecutive revolutions of pedaling, both can be considered the same pedal position where the pedals are located at the top. When you take the average values across all data, the mean value is ...
load example
mean(example)
ans = 1.5516
I do not think this mean value can accurately represent the data, as the actual mean value appears to be approximately 0.7 rad when angles greater than 6 rad are converted to negative angles (e.g., converting 6 rad to -0.2832 rad). So, I was wondering if there is any way to calculate the mean angle without the skewness of the data.
histogram(example,20)
Walter Roberson
Walter Roberson el 28 de Feb. de 2024
load example
norm_angle = example;
mask = norm_angle > pi;
norm_angle(mask) = norm_angle(mask) - 2*pi;
mean_angle = mean(norm_angle);
mean(mean_angle)
ans = 0.7138

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 28 de Feb. de 2024
You have to do something like
norm_angle = Angles;
mask = norm_angle > 180;
norm_angle(mask) = norm_angle(mask) - 360;
mean_angle = mean(norm_angle);
  1 comentario
Youngmin
Youngmin el 28 de Feb. de 2024
@Walter Roberson Thank you for your response. Although it is possible to apply this code to this example, it may cause the same issue on other variables as other variables could have different ranges of the angle.

Iniciar sesión para comentar.

Categorías

Más información sobre Descriptive Statistics and Visualization en Help Center y File Exchange.

Productos


Versión

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by