MATLAB: Finding peak to draw a smooth curve

interpolationplotsignal processing

Hi All,
I have attached a plot (blue) in which i want to identify peaks (red circle) and draw a smooth curve with similar shape (black) joining the detected read peaks. Can someone please help me here?
Thanks
Sowmya

Best Answer

Try this:
x = 0:10; % Create Data

y = rand(1,11); % Create Data
[pks,locs] = findpeaks(y); % Peaks ^ Location Indices
xi = linspace(min(x), max(x), 75); % Interpolation Vector
yi = interp1(x([1 locs end]), y([1 locs end]), xi, 'pchip'); % Interpolate
figure
plot(x,y)
hold on
plot(x(locs), y(locs), '^r')
plot(xi, yi, '-g')
hold off