MATLAB: How to find location of right peaks

shukla.prianka@yahoo.com

hello,i have a signal and wanted to find location of peaks and the right peaks.
time=y16;
signal=y15;
%convert to analog
Signal=(5*signal/1023);%anole removing DC offset
indexmin=find(min(Signal)== Signal)
xmin=time(indexmin)
ymin=Signal(indexmin)
indexmax=find(max(Signal)== Signal)
xmax=time(indexmax)
ymax=Signal(indexmax)
plot(time, Signal)
SSignal=smooth(Signal, 40);% smooth signal to find peaks
pks=findpeaks(SSignal)
size(pks)
hold on
plot(time, SSignal,'o')

Best Answer

Use findpeaks with two outputs:
[pks,locs] = findpeaks(SSignal);
The ‘locs’ variable will have the index values of the peaks it returns in the ‘pks’ variable.
To plot them, use ‘locs’ as a subscript in the vectors in your second plot call:
plot(time(locs), SSignal(locs),'o')