I'm working often with spectral data of various gases, and the bulk of the data analysis is assigning the peaks with maximum signal (y-axis) to frequency (x-axis). Often we have several thousand data points, and it can be quite difficult to manually find peaks. I've tried getting around this in Excel with clever IF/AND statements, but the major obstacle is signal noise: I simply cannot devise a clever Excel statement to help me pick peaks.
For example, using an =IF(AND(B3>B4,B3>B5),"max","") statement gives tons of extraneous hits where the noise causes a slight fluctuation in the data. Similarly, creating a column of slopes and doing an =IF(C3>0,C4<0),"max","") statement also gives bad data.
The most elegant solution I have is to pick an arbitrary value # that most of my peaks are above and use an =IF(AND(slope goes from + to -,B>#),"max","") statement. That seems to work for stronger peaks (maybe 70% of the peaks on a good day), but I still have to go in and manually look at the weaker peaks (and often when doing these spectra many energetic transitions that need labeling are statistically unlikely-->low signal). I'm wondering if anyone here has a better solution able to detect local maxima not resulting from noise with a better success rate.
Rcomes immediately to mind and should have powerful spectral density analysis packages readily available. I imaginepythonandJuliawould be equally well-suited. Both are absolutely zero-cost (well, zero monetary cost--can't promise you won't spend a few days learning the coding basics). – MichaelChirico Apr 20 '15 at 23:37I suppose I'm friendly to Excel because I like working in the library, but the computers here don't have any other data analysis programs. I could get something on my desktop at home... but then I'd have distractions (i.e. girlfriend and cat). One day I'll have an office!
– Stagg C. Apr 20 '15 at 23:40