Este ejercicio resuelto con matlab:
8.1 Ejercicio. Cálculo de un gradiente
Un cálculo muy común con una muestra de datos bidimensional es calcular una especie de gradiente numérico definido como:
grad(M)= �
�
�
�
�
�
�� M(i,j+1)-M(i,j-1)
2
M(i+1,j)-M(i-1,j)
2 �
�
�
�
�
�
�
� = �
� δx′(M) δy′(M) �
�
Que genera una matriz de menor tamaño al perder los extremos. Escribir la función que devuelve el resultado en una variable tipo estructura: grad.x=δ
x′(
M) y grad.y=δ
y′(
M).
8.1.1 Guía para la resolución del ejercicio
Lo más complicado de este ejercicio es entender el enunciado. En el fondo es exactamente el mismo cálculo que un gradiente numérico con la diferencia de que en este caso no nos importa la distancia entre los puntos. Lo más práctico para calcular la fórmula es construir una submatriz por cada elemento de la ecuación en diferencias; para calcular la submatriz es necesario saber que el último elemento de cualquier matriz o vector se puede llamar end. Por ejemplo, si nosotros queremos los elementos del quinto al último del vector u pero no sabemos sus dimensiones, en vez de calcularlo lo más práctico es hacer > > u(5:end).
8.1.2 Solución del ejercicio
function[grad]=mygradient(M)
grad.x = 0.5*(M

,3:end)-M

,1:end-2));
grad.y = 0.5*(M(3:end,: )-M(1:end-2,: ));
Solo checa la logica, parece que no es gran cosa.
fuente:
http://iimyo.forja.rediris.es/matlab/cursolatex011.html
si necesitas mas ayuda puedes checar con este metodo:
http://lmgtfy.com/?q=como+programar+la+gradiente (
http://lmgtfy.com/?q=como+programar+la+gradiente)
El segundo metodo es el recomendadisimo!
suerte!