Question
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?
Expert Answer
Kshitij Singh
PhD Expert
Answered Aug 16, 2026
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)
B(:,k) = lsqcurvefit(gausfcn, [pks(k); x(locs(k))], x, hgcs);
end
figure
plot(x,hgc)
hold on
for k = 1:numel(locs)
plot(x, gausfcn(B(:,k),x), 'LineWidth',2)
end
hold off
grid
100% Run Guarantee
3-Hour Fast-Track Delivery
Need a Custom Version or Complete Simulation for This Problem?
Our 500+ PhD engineers build, debug, and optimize working MATLAB scripts and Simulink (.slx) models tailored to your exact assignment rubrics with zero plagiarism.
Tested on MATLAB R2024b / R2026a
Turnitin 0% Plagiarism Report
Free 7-Day Revisions Guarantee
Have a different question? Ask here
Related matlab Questions & Solutions
Browse All →
Explore similar technical troubleshooting questions and verified MATLAB solutions:
Ready-to-Run MATLAB & Simulink Projects
Browse All Projects →