how to determine each local min point?

1 view (last 30 days)
Hi everyone, I have a urgent question to seek for help...
I have a sine wave however, angle in the sine wave is not a constant variation of x as shown below...
x = 0: 0.00001: 4;
v = x.*exp(x/2);
t = sin(v);
plot(x,t);
My trouble is how to display each of the local xmin point?
From the plot itself i wanted to display xmin1 = 1.859, xmin2 = 2.73, and xmin3 = 3.307.
Hope to hear from anyone soon... been cracking my head for the past weeks... )':
Best Regards
Will*

Accepted Answer

Image Analyst
Image Analyst on 6 Mar 2013
Edited: Image Analyst on 6 Mar 2013
If you have the Image Processing Toolbox, you can use imregionalmin(), like this:
% Original code
x = 0: 0.00001: 4;
v = x.*exp(x/2);
t = sin(v);
plot(x,t);
% Image Analyst's code:
minsIndexes = imregionalmin(t); % Logical array of where mins are.
% Extract the t values at those min locations;
minValues = t(minsIndexes)
% Get the x values at those mins.
minX = x(minsIndexes)
% Plot star over the mins.
hold on;
plot(minX, minValues, 'r*', 'MarkerSize', 10);
In the command window:
minValues =
0 -1.00 -1.00 -1.00 -1.00 -0.96
minX =
0 1.86 2.76 3.31 3.70 4.00

More Answers (1)

Matt J
Matt J on 6 Mar 2013
Edited: Matt J on 6 Mar 2013
k=3; %Do this for all desired k>=0
xmin=fzero(@(x) x.*exp(x/2) - 2*pi*k,0)
  1 Comment
Matt J
Matt J on 6 Mar 2013
There is also a minimum at x=-2, as elementary calculus can tell you.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!