Matlab-高斯滤波器的参数生成

Matlab-高斯滤波器的参数生成,matlab,Matlab,我试图在一个循环中创建多个高斯滤波器,如下所示: 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); 我得到这个

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

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.
我完全感到困惑,任何建议都将不胜感激。

这意味着如果
fspecial
的第一个参数是
'gaussian'
,那么第二个参数将是一个整数。这并不意味着对参数的预期类型有任何影响,只是它必须是一个四舍五入的数字

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

因此,您正在查看的命令应该是

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

或接近的值(请参阅,以获取将实数四舍五入为整数的可选函数)。

该函数需要类型为double的整数(即整数)。该参数决定返回的矩阵的大小,因此在那里传递分数参数是没有意义的。