Matlab - 高斯滤波器创建的参数

时间:2013-03-01 17:06:05

标签: matlab

我正在尝试在循环中创建多个高斯滤波器,如下所示:

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.

我感到非常困惑,任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

documentation表示如果fspecial的第一个参数是'gaussian',则第二个参数是整数。这并不意味着论证的预期类型,只是它必须是一个四舍五入的数字。

从第二次尝试和产生的错误,我理解第二个参数的预期类型是double

因此,您正在寻找的命令应该是

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

或接近的东西(有关将实数舍入为整数的替代函数,请参阅floor function documentation。)