Discrete derivative via Matlab

Hi to all,
I have tried to derivative a simple sine function with diff.
Here are the code:
x = 0:pi/100:10*pi;
y = sin(x);
figure;
plot(y)
y1 = diff(y);
figure;
plot(y1)
The question is this: why the derivative (a cosine function) isn't with max and min of 1 and -1 like sin(x)?
If I do:
Y1=max(y1);
Y=max(y);
Scale = Y/Y1
I obtain Scale = 31.8362.
The same is for second derivative: to obtain function in scale I must apply Scale factor two times.
Who can explain me the correct way to obtain a discrete derivative via Matlab?

 Accepted Answer

If you want to calculate the derivative like this, you have to divide the change in y (dy) by the change in x (dx), so dy/dx. You get the dy's by running the 'diff' command. The dx is equal to the distance between your x-values, in this case pi/100.
So in your case:
y1=diff(y)/(pi/100);

1 Comment

Thank you very much.
Now I write the correct code for all:
dx = pi/100;
x = 0:dx:10;
y = sin(x);
% y' = dy/dx
y1 = diff(y)/dx;
plot(x(1:end-1), y(1:end-1), x(1:end-1), y1)

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!