Find quasi-periodic peak locations from noisy photon count data

Technical Source
2 min readFeb 18, 2021

--

I am trying to find the method of locating the gaussian peaks from the photon count data. x axis is the number of photons for each spot and y axis is the counted spots.

I used findpeaks function to find peaks. The solid line is created by sgolayfilt.

hgcs = sgolayfilt(hgc, 10, 41);
plot(hgc); hold on;plot(hgcs)
findpeaks(hgc, 'MinPeakDistance', 20)

The peaks that I want to recover are located about 40, 80, 120, and 160.

Question1: Are there any functions or algorithms that can determine the number of peaks and the locations?

Question2: After 160, there are small features. Some of them may be still peaks following the first four peaks. At least, we know that the locations of peaks are quasi-periodic. Could we also find more peaks?

ANSWER

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

I gave up on estimating the width parameter, and just went for the amplitude and location with a uniform width.

Try This:

D = load('hgc.mat');
hgc = D.hgc;
x = linspace(0, numel(hgc), numel(hgc));
hgcs = sgolayfilt(hgc, 10, 41);figure
plot(x,hgc)
hold on
plot(x,hgcs)
hold off
grid
[pks,locs,w] = findpeaks(hgc, 'MinPeakDistance', 20, 'MinPeakProminence',5);gausfcn = @(b,x) b(1).*exp(-(x-b(2)).^2 * 0.05);for k = 1:numel(locs)

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source
Technical Source

Written by Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

No responses yet