我试图在Matlab中寻找一种方法来自动计算沿函数不同维度的梯度。
我已经找到了梯度函数here,但是它要求我写下每个维度的单个输出变量。 由于我是在采样算法的中间计算梯度,因此我希望梯度计算能够在高维输入时自动缩放。
基本上,如果F
是向量,则需要:
G = gradient(F)
成为具有单个条目的单元格数组:具有所有渐变值的向量。
但是,如果F
是2D数组,我希望G
是具有条目GX
和GY
的单元格数组,其中GX
是沿X方向和GY
沿Y方向的渐变。
答案 0 :(得分:0)
类似这样的方法可以解决问题:
nd = sum(size(F)>1);
G = cell(nd,1);
[G{:}] = gradient(F);
nd
是维数(仅调用ndims
是不合适的,因为在MATLAB中向量具有2维,所有东西都至少具有2维)。 [G{:}]
构造将gradient
的一个输出参数分配给单元格数组的每个元素。