diff gives back one less valor

28 views (last 30 days)
So I have this set of data, it's humidity vs time when drying food. I need the speed of drying so what do I do? I use cftool to find best fit of data then I tag the fit and export to workspace.
I have:
time=[1;2;3;4;5;6] x=[0.5;0.4;0.3;0.25;0.22;0.18]
I use cftool to fit it and export to worskpace
Then i use;
Rc=diff(finame(time))
Rc stands for speed in water removal (drying) and it gives back a vector with only 5 numbers, when it should give me a vector with 6 elements, each one the result of the derivate for each time...yet, as i said it doesn't... why is this?
Thanks a lot for the answers.

Accepted Answer

Sean de Wolski
Sean de Wolski on 4 Oct 2013
Edited: Sean de Wolski on 4 Oct 2013
From the doc for diff
If X is a vector of length m, then Y = diff(X) returns a vector of length m-1. The elements of Y are the differences between adjacent elements of X.
Y = [X(2)-X(1) X(3)-X(2) ... X(m)-X(m-1)]
Thus it does the backward differences requiring one element shorter. IF you want the vector to be the same length, pad it with a 0.
There's also this file that might interest you:
  3 Comments
Sean de Wolski
Sean de Wolski on 4 Oct 2013
@Thomas, padding the results with a zero would not alter the results, just shift them.

Sign in to comment.

More Answers (1)

Thomas
Thomas on 4 Oct 2013
It cannot give 6 elements since it calculates differences between successive elements and for 6 input values there are only differences e.g. assuming time=1:6 you have
INPUT : x=[ a b c d e f] (count 6) OUTPUT: differences used are b-a, c-b, d-c, e-d, f-e (count 5)
If you really need 6 values you could extrapolate your data boundaries and use a central differencing scheme.
  1 Comment
Juan Carlos
Juan Carlos on 4 Oct 2013
Yes! I thought i was something like that, i'll extrapolate. THANKS!

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!