gradient()是求數值梯度的函數。
用法
1、Fx = gradient(F,h):其中F爲一維矩陣,返回F的一維數值梯度,h是F中相鄰兩點的間距,缺省時默認爲1。
2、[Fx,Fy] = gradient(F,hx,hy):其中F爲二維矩陣,返回F的二維數值梯度;hx表示x方向上相鄰兩點的距離,缺省時默認爲1;hy表示y方向上相鄰兩點的距離,缺省時默認爲1。
3、[Fx,Fy,Fz]=gradient(F,hx,hy,hz):其中F爲三維矩陣,返回F的三維數值梯度,hx,hy,hz分別表示x、y、z三個方向上相鄰兩點的距離,缺省時默認爲1。
理解
1、[Fx,Fy]=gradient(F,hx,hy),其中Fx爲其水平方向上的梯度,Fy爲其垂直方向上的梯度,Fx的第一列元素爲原矩陣第二列與第一列元素之差除以hx,Fx的第二列元素爲原矩陣第三列與第一列元素之差除以(2*hx),以此類推:Fx(i,j)=(F(i,j+1)-F(i,j-1))/(2*hx)。最後一列則爲最後兩列之差除以hx。同理,可以得到Fy。
2、[Fx,Fy]=gradient(F),其中Fx爲其水平方向上的梯度,hx和hy默認爲1,Fy爲其垂直方向上的梯度,Fx的第一列元素爲原矩陣第二列與第一列元素之差,Fx的第二列元素爲原矩陣第三列與第一列元素之差除以2,以此類推:Fx(i,j)=(F(i,j+1)-F(i,j-1))/2。最後一列則爲最後兩列之差。同理,可以得到Fy。
實例
F=[6,9,3,4,0;5,4,1,2,5;6,7,7,8,0;7,8,9,10,0] 即
[Fx,Fy]=gradient(F),Fx結果爲:
[Fx,Fy]=gradient(F,2,2),Fx結果爲:
[Fx,Fy]=gradient(F,3,3),Fx結果爲:
注意問題
對圖像求梯度時,在獲取圖像矩陣A後,要將圖像轉化爲double型,即要用[dy,dx]=gradient(double(A)),否則會報錯。