在matlab中实现butterworth过滤器

时间:2014-06-18 08:53:13

标签: matlab filter

我有一个加速计3轴。

据我们所知,加速度是静态加速度(重力)和动态加速度之和。

我的目标是提取重力加速度,这将显示设备的方向。

我将应用一个butterworth过滤器来提取重力加速度。但我在选择截止频率和滤波器顺序时遇到问题。

T = 0.16秒; %采样率的时间因此Fs = 1 / 0.16; % 采样率?这是对的吗?

在阅读了几篇文章后,我发现截止值在0.1到0.5之间,这里我会选择0.5(因为我不知道它们是基于他们的选择。

这是我将在Matlab中执行以从3轴提取重力加速度的程序。

Fc = 0.5 ; %cut-off frequency

 Fs = 6.26 hz (1/0.16) ; % sampling rate order = 4;

[b,a] = butter(order,fc(fs/2),'low');

x = filter (b,a,x0);
y = filter(b,a,y0);

z = filter(b,a,z0);

2 个答案:

答案 0 :(得分:0)

您正在做的是,使用butterworth过滤器“减慢”测量速度。因此,在实践中,你试图摆脱“快速”部分。这在频域中意味着:你想要一个低通(低频=慢速信号通过,而高=快速滤除)。所以我猜你已经知道你应该能够找到一个合理的价值。

通常用于估算角度,您手头有陀螺仪。然后你宁愿去卡尔曼过滤,因为这不会给你的测量增加太多的延迟(如果它是时间依赖的)。

正如已经评论的那样,请记住,您正在处理采样数据(nyquist freq。是一种自然限制)。

答案 1 :(得分:0)

截止频率取决于您想要从嘈杂信号中提取的感兴趣信号范围。假设:您在裤袋内使用手机并在活动期间收集原始数据。那么你的截止频率与人类活动的速度直接相关(例如:跑步,走路,慢跑等)。 注意:随着滤波器阶数N的增加,实际频率响应接近理想值。 过滤顺序也是您要提取以进行分析的信号的一个因素。 有关更多信息,请参阅此出版物 Jayalath.S的基于陀螺仪数据的计步器算法 链接: http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6553971&queryText%3DA+gyroscopic+data+based+pedometer+algorithm