diff() scales the amplitude

I'm trying to numerically differentiate a signal. As a test, I created a y=sin(x) signal. When I use diff(y), the output amplitude is scaled down to 0.1 instead of 1. The analytical solution is cos(x), therefore I'd expect the output to have an amplitude of 1 as well. What am I missing?

 Accepted Answer

Mischa Kim
Mischa Kim on 15 May 2014
Edited: Mischa Kim on 15 May 2014
Jonas, diff only calculates the differences between adjacent elements, the dy. To get the derivative you need to devide by dx, e.g.
x = 0:0.1:10;
y = sin(x);
dydx = diff(y)/(x(2)-x(1)); % assuming dx to be constant
plot(x(1:end-1),dydx)

More Answers (0)

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Asked:

on 15 May 2014

Commented:

on 15 May 2014

Community Treasure Hunt

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

Start Hunting!