MATLAB: How to find standart devuation of biological data

biological datafitpeakstandart devuation

I have biological data with big noise(see plot down). On this plot you can see several peaks, in my interest are two bigest of them. I want to find standart deviation of each of this peaks. Previously I used http://www.mathworks.com/matlabcentral/fileexchange/23452-interactive-peak-fitter-version-9-2 this function (Peak Fitter ) , but since I have biological data(very variable) this function doesn't work always. The algoritm which comes to my mind is next: 1)smooth and find peaks 2)cut peaks from each other manualy 3)fit them with gaussian 4)find standart deviation But I don't like to cut manualy this 2 peaks fron each other, I want to do it automaticaly but I don't know how it's possiable… May be someone knows how I can cut them automaticaly or have any ideas of alternative algoritm to find standart deviation

Best Answer

You could fit a Gaussian Mixture Model (GMM) with two Gaussians to the data using the Expectation Maximziation (EM-) Algorithm and extract the standard deviations from the result. Use findpeaks to initialize the mean values and start with small standard deviations. Applying a bandpass filter prior to this will definitely improve the result.