2013-03-01 78 views
0

我想在像這樣一個循環來創建多個高斯濾波器:Matlab的 - 參數高斯濾波器創作

for sigma:3:0.4:15 
    filter = fspecial('gaussian', 6*sigma, sigma); 
end 

它不喜歡我傳遞一個浮動的大小參數,並給了我以下錯誤:

Expected input number 2, N, to be integer-valued. 

但是,當我改變的代碼行這樣:

filter = fspecial('gaussian', uint8(6*sigma), sigma); 

我得到這個錯誤:

Expected input number 2, N, to be one of these types: 
double 
Instead its type was uint8. 

我很困惑,任何意見將不勝感激。

+0

函數期待double類型的整數(即整數)。該參數決定了返回的矩陣的大小,因此在那裏傳遞一個小數參數是沒有意義的。 – jerad 2013-03-01 17:16:56

回答

0

documentation意味着如果fspecial的第一個參數是'gaussian',那麼第二個參數將是一個整數。這並不意味着參數的預期類型,只是它必須是一個四捨五入的數字。

從你的第二次嘗試和由此產生的錯誤,我明白第二個參數的預期類型是double

因此你正在尋找的命令應該是這樣的

filter = fspecial('gaussian', floor(6*sigma), sigma); 

或者相近(見floor function documentation替代功能,實數四捨五入到整數)。