Matlab矩阵求导和求梯度有什么不同


原始矩阵

\[\begin{bmatrix} 1 & 3 & 4 \\ 5 & 6 & 9 \\ 2 & 7 & 8 \\ \end{bmatrix} \]

求一阶导数

\[\begin{bmatrix} 4 & 3 & 5 \\ -3 & 1 & -1 \\ \end{bmatrix} \]

默认的求导方式是相邻元素(按行或按列)做差,上面是按行做差得到结果。
如果是求二阶导数,就是做一次差后,再做一次差。

求梯度

\[\begin{bmatrix} 2 & 1.5 & 1 \\ 1 & 2 & 3 \\ 5 & 3 & 1 \\ \end{bmatrix} \]

求梯度的方式是 \(当前列的梯度 = (当前列的右列-当前列的左列) ÷ 2\)
对于左边缘而言,\(当前列的梯度 = (当前列的右列-当前列)\)
对于右边缘而言,\(当前列的梯度 = (当前列-当前列的左列)\)

不同之处

返回的矩阵的维度不同

补充:对于符号求导,可以用下面的方法

syms x1 x2 x3;
A = [x1, x2^2, x3^3];
for i = 1:length(A)
    B(1,i) = diff(A(i));
end


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM