Matlab常用函數--gradient

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),否則會報錯。


發佈了30 篇原創文章 · 獲贊 20 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章