我正在尝试编写一个返回一维高斯滤波器的函数.该函数将sigma作为参数.问题是该函数为所有sigma返回相同的数组.
function gaussFilter=gauss(sigma)
width = 3 * sigma;
support = (-width :sigma: width);
gaussFilter= exp( - (support).^2 / (2*sigma^2));
gaussFilter = gaussFilter/ sum(gaussFilter);
Run Code Online (Sandbox Code Playgroud)
请注意,支持数组是正确计算的,但在应用exp时会出现问题.
我是MATLAB的完整初学者和信号分析,所以我不太了解信号滤波背后的傅立叶数学.我拿了Ipod Touch并使用了一个应用程序,将加速度计数据(以50Hz的采样率)记录到CSV,然后我将这些CSV数据加载到matlab中.我现在正在尝试对信号应用低通滤波器,以消除因加速度的微小变化而产生的噪声(因此我只剩下大的加速度信号).
我今天在matlab中阅读了一堆关于信号滤波的内容,我拥有信号处理工具箱,但我仍然对某些变量的含义感到困惑.例如,函数filter(b,a,data)不断出现,我知道a并且b是系数的向量,但我不知道它们如何影响滤波器或如何根据我对信号的了解/我想用它做什么来创建这些值.
如果我没有傅立叶分析的强大背景,我应该去哪里学习信号处理的基础知识?我应该如何在matlab中创建我的低通滤波器?谢谢!
我尝试了它,并a=[1 -0.9] b=1根据matlab中的低通滤波器进行基于其他一些stackexchange帖子制作,它似乎做了一些事情,但它似乎也放大了我的信号3倍.通过应用具有这些值的过滤器,我到底做了什么?