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?

 Réponse acceptée

Mischa Kim
Mischa Kim le 15 Mai 2014
Modifié(e) : Mischa Kim le 15 Mai 2014

0 votes

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)

Plus de réponses (0)

Catégories

En savoir plus sur Statistics and Machine Learning Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by