代码之家  ›  专栏  ›  技术社区  ›  Joel Wong

matlab中三维阵列的一维数值梯度

  •  0
  • Joel Wong  · 技术社区  · 8 年前

    我有一个大小为(nrows x cols x ndivs)的三维阵列(图像),我希望以0.01的间距计算沿三维的1-D数值梯度,并获得(nrow x ncol)组梯度。

    我想到了一种方法,通过循环每个像素:

    grad_F = zeros(nrows,ncols,ndivs);
    
    for irow = 1:nrows
        for icol = 1:ncols
            grad_F(irow,icol,:) = gradient(F(irow,icol,:),0.01);
        end
    end
    

    我想问,是否有一个梯度数组操作来执行上述操作,而不在每个像素上循环?如果有这样一种方法,它是更快还是需要相同的时间?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Ahmet Cecen    8 年前

    如果我理解正确的话,这应该行得通。

    [~,~,FZ] = gradient(F,0.01)
    

    FZ是三维中的梯度。