2016-11-14 250 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文檔中看到它時,我認爲這是指其他一些操作。 –