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


浙公网安备 33010602011771号