Calculate standard deviation for different groups
이전 댓글 표시
I want to plot a Measurement with a bar figure. Therefore I want to create different groups and calculate the standard deviation for each group. I have a vector "Measurement" which is sorted according to increasing values. I get group IDs for the Measurement values by the use of the histc function.
[~,Measure_ID]=histc(Measurement_x,0:200:max);
In the next step I try to calculate the standard deviation with the accumarray function.
group_std = accumarray(Measure_ID,Measurement_y,[],@std);
The std command uses the follow mathematical formula:

The problem is that accumarray calculates the arithmetic average for each group separately. But I want to see the standard deviation regarding to the global arithmetic average. Is there a way to solve my issue?
Version: 2012b
댓글 수: 1
Do you mean:
std(Measurement_y)
? What exactly is "standard deviation regarding to the global arithmetic average"?
채택된 답변
추가 답변 (1개)
Guillaume
2018년 7월 23일
"The problem is that accumarray calculates the arithmetic average for each group separately".
It's not accumarray doing that, it's std, because that the definition of the standard eviation.
To do what you want, you'll have to implement your own standard deviation calculation:
whole_mean = mean(Mesurement_y);
group_notexactlystd = accumarray(Measure_ID, Measurement_y, [], @(v) sum((v - whole_mean).^2)/(numel(v)-1));
카테고리
도움말 센터 및 File Exchange에서 Pie Charts에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!