Discrete derivative via Matlab

135 visualizaciones (últimos 30 días)
Giacomo Alessandroni
Giacomo Alessandroni el 22 de Oct. de 2013
Comentada: Giacomo Alessandroni el 22 de Oct. de 2013
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?

Respuesta aceptada

Laurent
Laurent el 22 de Oct. de 2013
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 comentario
Giacomo Alessandroni
Giacomo Alessandroni el 22 de Oct. de 2013
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)

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Function Creation en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by