有没有一种方法可以自动获取沿数组不同维度的渐变?

时间:2019-03-25 14:38:30

标签: matlab multidimensional-array derivative

我试图在Matlab中寻找一种方法来自动计算沿函数不同维度的梯度。

我已经找到了梯度函数here,但是它要求我写下每个维度的单个输出变量。 由于我是在采样算法的中间计算梯度,因此我希望梯度计算能够在高维输入时自动缩放。

基本上,如果F是向量,则需要: G = gradient(F) 成为具有单个条目的单元格数组:具有所有渐变值的向量。 但是,如果F是2D数组,我希望G是具有条目GXGY的单元格数组,其中GX是沿X方向和GY沿Y方向的渐变。

1 个答案:

答案 0 :(得分:0)

类似这样的方法可以解决问题:

nd = sum(size(F)>1);
G = cell(nd,1);
[G{:}] = gradient(F);

nd是维数(仅调用ndims是不合适的,因为在MATLAB中向量具有2维,所有东西都至少具有2维)。 [G{:}]构造将gradient的一个输出参数分配给单元格数组的每个元素。