Post by Matthew ArgallPost by Matthew ArgallPost by Jie ZhouIs there a derivative function in IDL similar as DIFF in matlab? I think the DERIV is different from DIFF.
TS_DIFF(data, 1) would be equivalent.
Actually, maybe not. TS_DIFF calculates the forward difference. I think you are looking for the backward difference.
In that case, I tend to use
result = data[1:*] - data[0:n_elements(data)-1]
or
result = shift(data, 1) - data
result = result[0:n_elements(result)-1]
In fact what I tried to do is using diff function to calculate the n-th derivative of an 2-d matrix. for example, for a matrx:
A=
1 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 1
in matlab, the DIFF(A,2) gives:
1 -2 1 0 0 0 0 0 0 0
0 1 -2 1 0 0 0 0 0 0
0 0 1 -2 1 0 0 0 0 0
0 0 0 1 -2 1 0 0 0 0
0 0 0 0 1 -2 1 0 0 0
0 0 0 0 0 1 -2 1 0 0
0 0 0 0 0 0 1 -2 1 0
0 0 0 0 0 0 0 1 -2 1
Until now, I don't find a equivalent function in IDL.
Thanks to alx, I use
D=(shift(shift(A,0,1)-A,0,1)-(shift(A,0,1)-A))[*,2:*]
to finish the task.
jie