Effacer les filtres
Effacer les filtres

Points of Inflection for Sine Curve

13 vues (au cours des 30 derniers jours)
Osita Onyejekwe
Osita Onyejekwe le 1 Nov 2016
Commenté : dpb le 1 Nov 2016
In the code below, I have successfully detected the peaks of the sine curve. I have also put the peaks on the plot. May someone PLEASE help me now identify the points of inflection. It is where the graphs goes from concave up to concave down (NOT the peaks). The points of inflection should be points across the Sine curve that go across the middle of the graph. The code is below. If you could also mark the points on the graph that would be much appreciated. Thanks!
I found a solution to this problem, it stated that
***************************************************************************** "If your curve are data (not calculated by a function) I would use the gradient function to calculate the derivative. To find the zero-crossing of the derivative, you can either use a threshold test, or if appropriate for your derivative, the interp1 function." *************************************************************************
I just dont know how to code the above..but here is my code again below. Thanks again guys: Basically,inflection points in the signal is to be determined automatically by detecting zero-crossings in derivatives of the signal. I need help finding the zero-crossings of the signal. Thank you!!
x = 1:500;
X = x;
J = 1;
Fs = 499;
N = J*Fs;
t = 0: 1/Fs : J;
Fn = 3; % this control the number of cycles/periods
deltaJ = 0.0020;
deltax = 1;
y_sine_25HZ = sin(Fn*2*pi*t);
y = y_sine_25HZ ;
plot(x,y, 'k.')
% drvY = diff(y)/deltax; % one unit shorter than y
% drvY = [drvY , drvY(end)]; % making up for the missing point
% secondDrvY = diff(drvY)/deltax;
% secondDrvY = [secondDrvY, secondDrvY(end)];
% [~,locup]=findpeaks(y) % (+)ive peaks % location up
% [~,locdn]=findpeaks(-y) % (-)ive peaks (positive negative y) % location down
dy=[0 sign(diff(y))];
locdn = find((diff(dy))==2) % location down
locup = find((diff(dy))==-2) % location up
plot(t,y)
ylim([-1.05 1.05])
hold on
scatter(t(locup)',y(locup)',30,'r','*')
scatter(t(locdn)',y(locdn)',30,'g','d','filled')
  3 commentaires
Osita Onyejekwe
Osita Onyejekwe le 1 Nov 2016
I completely understand your technique, and I understand the mathematics in solving for the zero crossing, I just have a problem putting it into code. Zero crossing is when the second derivative crosses the zero -line from positive to negative and the first derivative has a local maxima. I'm just a week new to Matlab...so its all new to me ..i just need a little help on this one and I'm good to go
dpb
dpb le 1 Nov 2016
find(abs([0 diff(sign(y)])==2)

Connectez-vous pour commenter.

Réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by