MATLAB: Finding local minima and maxima

findpeakslocal maximalocal minimalocalmaximalocalminimasignals

Hi,
i have been trying find a way of plotting the local maxima and local minima.
I have used the findpeaks(); fuinction for the both of them, but it gives me two signals being plotted, i belive this will be because the singal has been negatively multiplied to try to find the local minima.
However i am trying to plot both max and min onto the same singnal, and the markers to be of diffenet colour.
Below is the code that i have tried to use, ive inlcuded a seperate way of finding local minima, but i am unsure of how to plot this on the same singal.
t = (0:100)*0.6*10^-3;
x1 = 3*sin(2*pi*100*t);
findpeaks(x1);
hold on
findpeaks(-x1);
%TF = islocalmin(x1);
%plot(t,x1,t(TF),x1(TF),'r*')

Best Answer

You already found the correct functions. Applying them appropriately appears to be the problem.
Try this:
t = (0:100)*0.6*10^-3;
x1 = 3*sin(2*pi*100*t);
TFmax = islocalmax(x1);
TFmin = islocalmin(x1);
figure
plot(t, x1)
hold on
plot(t(TFmax), x1(TFmax), '^r', 'MarkerFaceColor','r')
plot(t(TFmin), x1(TFmin), 'vg', 'MarkerFaceColor','g')
hold off
grid
.