matlab中三维数组的一维数值梯度

时间:2016-11-14 09:58:02

标签: image matlab gradient

我有一个大小的三维数组(图像)(nrows x cols x ndivs),我希望沿着第三维计算1-D数值梯度,间距为0.01,并获得(nrows x ncols)渐变集。

我想到了通过循环每个像素来实现这一目标的方法:

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 个答案:

答案 0 :(得分:2)

如果我理解正确,这应该有用。

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

FZ是你的第三维渐变。