2
votes

I want to use Matlab to calculate the standard deviation of a population I have compiled.

The matlab function takes as input one large population vector and outputs the standard dev.

However, for optimisation purposes, instead of one large vector, I have a set of individual data points, and the number of times each point is used.

I could use a loop and create a huge population vector, but it's not ideal.

How could I go about this?

1

1 Answers

3
votes

Very easy from the definition of standard deviation: just introduce weights to account for the number of repetitions of each data point:

data  = [1 3 4 2 4]; %// data values
count = [4 5 4 5 8]; %// number of times for each value

mu = sum(data.*count)./(sum(count));
dev = sqrt(sum((data-mu).^2.*count)./(sum(count)-1)); %// or ./sum(count)