Simple Question: gradient function Formula

5 views (last 30 days)
in the following line, x is a 200 element column vector, h is a scalar eg.say 20 or 30
a = gradient(x,h)
can you please tell how 'a' is computed from x and h? Thanks in advance

Accepted Answer

Roger Stafford
Roger Stafford on 2 Feb 2015
For 2 <= k <= 199, the computation is a central difference:
a(k) = (x(k+1)-x(k-1))/(2*h)
However, for the two endpoints it is:
a(1) = (x(2)-x(1))/h
a(200) = (x(200)-x(199))/h
In case h is a vector of the same length as x, then it becomes a divided difference:
a(k) = (x(k+1)-x(k-1))/(h(k+1)-h(k-1))
and
a(1) = (x(2)-x(1))/(h(2)-h(1))
a(200) = (x(200)-x(199))/(h(200)-h(199))
  1 Comment
Santino M
Santino M on 3 Feb 2015
Edited: Santino M on 3 Feb 2015
Thanks Star Strider I did try this by plotting. Thanks Roger for your reply. I did not understand the need of dividing by the scalar value h in a gradient. I initially assumed that the h denoted spacing between points eg. for h=20; grad(k) = (x(k-10) - x(k+10))/h. apparently it is not so.Can you please tell me how to use gradient to achieve the above. I want to set the interval for calculating the difference while calculating gradient. I can as well make a small function to do the same. If there is a way to get it done through an in built function it would be faster..especially if it is used a large no. of times (say > 10000000 times or more)

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!