我正在尝试在循环中创建多个高斯滤波器,如下所示:
for sigma:3:0.4:15
filter = fspecial('gaussian', 6*sigma, sigma);
end
我不喜欢将float传递给size参数,并且给出了以下错误:
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 :(得分:0)
documentation表示如果fspecial
的第一个参数是'gaussian'
,则第二个参数是整数。这并不意味着论证的预期类型,只是它必须是一个四舍五入的数字。
从第二次尝试和产生的错误,我理解第二个参数的预期类型是double
。
因此,您正在寻找的命令应该是
filter = fspecial('gaussian', floor(6*sigma), sigma);
或接近的东西(有关将实数舍入为整数的替代函数,请参阅floor function documentation。)