高斯滤波器在Matlab上的矢量

时间:2011-08-09 06:28:33

标签: matlab vector filter gaussian

我有一个n维向量(1xn数据集,它不是图像数据),我想对它应用高斯滤波器。我有Image Processing Toolkit和其他一些(询问你是否需要列表)。

据推测,我可以使hsize函数的fspecial参数类似于[1 n]。 我还可以使用imfilter将其应用到我的向量中作为下一步,还是应该使用其他内容?

我已经看过很多关于如何在Matlab中将高斯滤波器应用于二维图像数据的例子,但我对Matlab作为一个平台仍然相对较新,所以一个例子真的很好。

注意:我目前无法尝试它,看看会发生什么(当前没有安装Matlab的机器上),否则我会先尝试一下,然后才会问我是否遇到问题{{ 1}}和fspecial

1 个答案:

答案 0 :(得分:17)

为什么不自己创建高斯滤波器?您可以查看fspecial中的公式(或高斯的任何其他定义):

sigma = 5;
sz = 30;    % length of gaussFilter vector
x = linspace(-sz / 2, sz / 2, sz);
gaussFilter = exp(-x .^ 2 / (2 * sigma ^ 2));
gaussFilter = gaussFilter / sum (gaussFilter); % normalize

并且为了应用它,您可以使用filter

y = rand(500,1);
yfilt = filter (gaussFilter,1, y);

并且不要忘记滤波器具有延迟,这意味着滤波后的信号与输入信号相比发生了偏移。由于此过滤器是对称的,因此您可以使用conv代替filter来获取非移位输出,并使用same选项:

yfilt = conv (y, gaussFilter, 'same');