【问题标题】:Implemeting low-pass Daubechies wavelet filters in matlab在matlab中实现低通Daubechies小波滤波器
【发布时间】:2017-04-06 10:28:36
【问题描述】:

我一直在尝试在 MATLAB 中实现这两个过滤器:

Daubechies 4 未抽取小波 3.75 Hz e 小波 7.5Hz Daubechies 4 未抽取滤波器组 7.5 Hz

我已经大量研究了小波工具箱,但我仍然无法弄清楚算法的正确实现是什么,以及截止频率的定义。

有人有这方面的经验吗?

我尝试的是:

movementOut = movementIn;
% Set Daubechies wavelet name.
wname = strcat('db',num2str(order));
% Compute the corresponding scaling filter.
daubechies=dbwavf(wname);
movementOut = filter(daubechies,1,coordinates_values);
%movementOut = filtfilt(daubechies,1,coordinates_values);

我尝试了filterfiltfilt,但输出结果似乎非常相似。我正在处理 Kinect Z 数据(从 4.5m 到 1.0m,然后再到 4.5m),但我似乎没有看到使用小波有任何区别。在最先进的方法中,经常使用 db4 小波。

疑问:

  1. 这个实现是否正确?

  2. 如何设置截止频率?

  3. 如何实现滤波器组?

提前致谢。

【问题讨论】:

  • 没有任何背景,很难理解你到底想做什么。您确实要对信号进行低通滤波吗?为什么要应用小波?信号的采样率是多少?您的目标是过滤器的实时应用吗?您是否尝试过更简单的过滤器设计,例如巴特沃斯?
  • @Diphtong 是的,我想用定义截止频率的 db4 进行低通滤波器。我想应用小波,因为我想复制由特定作者制作的最新作品。我的 fs = 200 赫兹。用于 pos 处理的过滤器。我已经实现了巴特沃斯过滤器,它们工作正常。我只是可以用截止频率为 db4 的实现提供一个适当的解决方案。
  • 虽然我无法回答您的问题,但我可以提供一些建议:Filtfilt 很可能不是一个好主意。此外,如果你想实现这个小波滤波器,你需要得到一本关于小波的好书,并从基础开始。这不是关于实施,而是关于基本理解(我也没有)。这个话题对我来说似乎相当困难。它可能会花费你一个多月的时间。最后,您应该记住,在数字滤波器中,截止频率取决于采样频率。您应该将截止频率表示为奈奎斯特频率的一部分。
  • @Diphtong 是的,这是使用巴特沃斯过滤器的过滤器/过滤器的基础知识。您可以根据这些频率计算比率,并且执行起来非常简单。但由于某种原因,似乎不存在添加截止频率的 daubechies 实现(我找不到任何具有常规和验证实现的示例)

标签: matlab filter wavelet lowpass-filter


【解决方案1】:

我不太清楚你想做什么,但你需要在小波算法中使用小波滤波器。你有小波工具箱吗?它有很好的文档!

小波变换执行带通滤波,因此您可能需要使用另一种算法来达到您的目的。要查看信号中的 3.75 Hz 或 7.50 Hz,如果您知道输入的采样率,您可以计算上限和下限。

查看this post,它提供了一些指向 matlab 脚本的链接,用于快速小波变换(一系列过滤和上/下采样组合),如果您没有小波工具箱,您可以使用。

请注意,快速小波变换确实使用了下采样,因此它不是“未抽取”。有很多方法可以做到这一点,在小波工具箱中,在WaveLab 和其他地方(参见this paper 的概述)。多阅读可能是个好主意,该论文中的参考文献应该可以解决问题。

最后一个警告:名称 db4 有时用于具有 4 个系数(2 个消失矩)的滤波器,有时用于具有 4 个消失矩(8 个系数)的滤波器!谷歌“Daubechies 4”,你会找到两者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2015-02-02
    • 2017-12-21
    相关资源
    最近更新 更多