0

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

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

它不喜欢我将浮点数传递给 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.

我完全困惑,任何建议将不胜感激。

4

1 回答 1

0

文档暗示如果第一个参数是fspecial'gaussian'第二个参数是一个整数。这并不意味着参数的预期类型有任何含义,只是它必须是一个四舍五入的数字。

从您的第二次尝试和由此产生的错误中,我了解到第二个参数的预期类型是double.

因此,您正在查找的命令应该类似于

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

or something close (see the floor function documentation for alternative functions to round real numbers to integers).

于 2013-03-01T17:17:07.493 回答