2016-11-14 251 views
0

我有一个三维数组(图像)的大小(nrows x cols x ndivs),我想计算一维数值梯度沿着第三维,间距为0.01,并获得(nrows x ncols)组的梯度。matlab中三维数组的一维数值梯度

我已经想到了一个办法由每个像素遍历做到这一点:

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 

我想问一下,如果有梯度做以上无需每个像素遍历数组操作?如果有这样的方式,它是否更快或需要相同的时间?

回答

2

如果我正确理解你,这应该工作。

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

FZ是您在第三维中的渐变。

+0

好的,谢谢!当我在matlab文档中看到它时,我认为这是指其他一些操作。 –