首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用matlab中的高斯函数实现高斯滤波

利用matlab中的高斯函数实现高斯滤波
EN

Stack Overflow用户
提问于 2021-02-20 02:28:05
回答 1查看 43关注 0票数 0

我正在尝试使用高斯函数对信号进行滤波。

这是我想出来的代码。

代码语言:javascript
复制
clear all
x = -1:0.001:1;
y = sin(2*pi*x/0.4) + sin(2*pi*x/0.1);

yh = fft(y);
plot(abs(yh))
del = 0.1;
g = (6/(pi*del^2))^0.5*exp(-6*x.^2./del^2);
gh = fft(g);

yfilter = ifft(2*pi*yh.*gh);
plot(x,y)
hold on
plot(x,yfilter);

然而,当我这样做时,滤波信号的振幅会放大。这是正常的吗?如果不是,我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-20 03:11:47

由于滤波器未归一化,因此信号被放大。您可以使用plot(abs(gh)) (或更好的plot(fftshift(abs(gh))))检查它的频率响应是否具有很大的幅度。

为了避免这种情况,你应该对过滤器进行标准化。有几种可能的方法可以做到这一点。例如,为了实现零频率使用的单位增益

代码语言:javascript
复制
g = g/sum(g);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66283109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档