【问题标题】:Is there a way to automatically get the gradient along the different dimensions of an array?有没有办法沿着数组的不同维度自动获取渐变?
【发布时间】:2019-03-25 14:38:29
【问题描述】:

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

我找到了梯度函数here,但它需要我为每个维度写下单独的输出变量。 由于我在采样算法的中间计算梯度,我希望梯度计算能够随着更高维度的输入自动缩放。

基本上,如果F 是一个向量,我会想要: G = gradient(F) 成为具有单个条目的元胞数组:具有所有梯度值的向量。 但是,如果F 是二维数组,我希望G 是具有条目GXGY 的元胞数组,其中GX 是沿X 方向的梯度,GY 是沿X 方向的梯度Y 方向。

【问题讨论】:

    标签: matlab multidimensional-array derivative


    【解决方案1】:

    这样的事情可以解决问题:

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

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

    【讨论】:

    • 干得好!感谢您的回答和对配方的反馈!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多