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的整数(即整数)。该参数决定返回的矩阵的大小,因此在那里传递分数参数是没有意义的。