![]() |
1
10
读取FIR和IIR滤波器。这些是使用系数数组的过滤器。 如果你在“FIR或IIR过滤器设计器”上进行谷歌搜索,你会发现很多软件和在线小程序为你完成了艰巨的工作(获取系数)。 编辑: 这一页在这里( http://www-users.cs.york.ac.uk/~fisher/mkfilter/ )允许您输入过滤器的参数,并将吐出准备使用的C代码。。。 |
![]() |
2
5
你是对的,你需要对你的信号进行低通滤波。任何超过5500 Hz的信号都会出现在下采样信号中,但会被“混叠”为另一个频率,因此在下采样之前,您必须删除这些信号。 使用浮动进行过滤是个好主意。也有固定点过滤算法,但这些算法通常有质量折衷。如果你有花车,那就用吧! 使用DFT进行过滤通常是过分的,它使事情更加复杂,因为DFT不是一个连续的过程,而是在缓冲区上工作。 数字滤波器通常有两种口味。FIR和IIR。通常情况下,它们的想法是相同的,但IIF滤波器使用反馈回路来实现更陡峭的响应,系数要少得多。这可能是一个降采样的好主意,因为您需要一个非常陡峭的滤波器斜率。 下采样是一种特殊情况。因为你要扔掉4个样本中的3个,所以没有必要计算它们。有一种特殊的滤波器,称为多相滤波器。 有关更多信息,请尝试谷歌搜索多相IIR或多相FIR。 |
![]() |
3
5
请注意(除其他注释外),简单直观的方法” 通过将每组4个连续样本替换为平均值,将样本减少4倍 顺便说一句:实际上,任何进行重采样(音频、图像或其他;音频示例:sox)的软件都会考虑到这一点,并且通常允许您选择底层的低通滤波器。 |
![]() |
4
1
在对信号进行下采样之前,需要应用低通滤波器以避免“混叠”。低通滤波器的截止频率应小于奈奎斯特频率,即采样频率的一半。 |
![]() |
5
1
可能的“最佳”解决方案实际上是DFT,丢弃频率的顶部3/4,执行反向DFT,域限制在底部1/4。在这种情况下,丢弃前3/4个是一个低通滤波器。填充到2个采样数的幂可能会给您带来速度优势。但要注意FFT包是如何存储样本的。如果是复数FFT(更容易分析,通常具有更好的特性),频率将从-22到22,或从0到44。在第一种情况下,您需要中间的1/4。在后者中,最外层的1/4。 通过将样本值平均在一起,可以完成适当的工作。四个接四个地抓取样本并进行同等加权平均的简单方法是可行的,但也不是太好。相反,您需要使用一个“内核”函数,以非直观的方式将它们平均起来。
最后还有一种很差(但很快)的方法,就是丢弃大部分样本,只保留第0个、第4个,依此类推。 老实说,如果它适合内存,我建议只使用DFT路线。如果它没有使用其他人建议为您构建过滤器的软件过滤器包之一。 |
![]() |
6
1
你所追求的过程叫做“抽取”。 有两个步骤:
设计和应用低通滤波器的方法很多。 你可以从这里开始: |
![]() |
7
1
你可以利用 libsamplerate 去做这项繁重的工作。Libsamplerate是一个C API,负责计算过滤器系数。您需要从不同的质量过滤器中进行选择,以便在质量和速度之间进行权衡。 如果您不想编写任何代码,可以使用 Audacity 进行采样率转换。它提供了一个强大的GUI,并利用libsamplerate进行采样率转换。 |
![]() |
8
0
我会尝试应用DFT,将结果的3/4切掉,然后应用逆DFT。如果不真的努力,我就说不出它听起来是否好。 |
![]() |
10
0
您必须应用低通滤波器(去除5500 Hz以上的频率),然后应用抽取(保留每N个样本,在您的情况下每4个样本)。
刚在谷歌上搜索了一篇介绍这一主题的文章: https://www.dspguru.com/dsp/faqs/multirate/decimation |