我通過可視化資料的變化偶然發現了這一點。在我看來,Matlab 中的梯度函式對于某些輸入有一個弱點。假設我有一個像棋盤一樣的矩陣并計算梯度:
matrix = repmat([1 5;5 1], 10, 10)
[Fx,Fy] = gradient(matrix);
在矩陣中,我們在兩個方向都有很多變化。但是由于梯度的行為,Fx 和 Fy 將只包含除邊界之外的零。
這種行為是想要的嗎?那么使用 diff() 然后使用填充實作相同大小的輸入和輸出矩陣不是總是更好嗎?或者換句話說,什么時候使用 gradient() 而不是 diff() 有用?
uj5u.com熱心網友回復:
該檔案告訴使用 gradient中心差異來計算內部點的梯度,這解釋了您的棋盤模式的行為。
此函式旨在計算在常規網格上評估的函式的梯度。為了使梯度有意義,我們假設函式是可微的。但是中心差分(或任何有限差分方案)只有在函式的采樣足夠密集時才有意義,否則您將遇到此類問題。
uj5u.com熱心網友回復:
Matlab中的梯度函式梯度必要
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/433594.html
上一篇:如何在matlab中繪制函式?
