2017-06-12 61 views
0

在我的Matlab脚本中,我正在加载一个音频信号,然后我要分解成n个不同的子带(并对每个带执行不同的操作)。将信号分解为n个相同大小的子带

举个例子,假设我们有一个信号包含高达1KHz的频率,我想将其分成n = 10个子带。 (0-100Hz,100-200Hz,...,900-1Khz)。

我该如何去实现这样的事情?在Matlab中是否有一些内置函数或一些外部Matlab库可以实现类似的功能?

回答

1

您傅立叶变换信号。你会得到奈奎斯特频率以上的鬼频率,这是你可以用你的一半数据点表示的最高频率。所以这给出了一个上限。您可以表示的最低频率是直流偏置。

只需将您感兴趣的频段外的所有系数设置为零,即可获得子频段。然后,您可以进行逆变换以恢复实际信号。

但是从您的帖子中可以明显看出,您对信号没有多少经验,并且子带可能不是您要查找的内容。如果想要转换整个音频波,则会遇到问题,因为您必须在Windows中应用fft。这并不像我提出的那样简单。

+0

对,您提到的第一部分现在回到我身上。是的,将乐队之外的系数设置为零以外的任何特定乐队感觉非常明显,但是我怎么实际上达到那么少。例如,我如何去查找FFT:ed信号中的0-100 Hz频段? –

+1

您需要设计一个中通滤波器。搜索术语“有限脉冲响应滤波器”和缩写“FIR”。 –

+0

好的,谢谢 - 现在正在研究一些带通滤波器 - 感觉像是一个更好的解决方案。我猜FFT:如果我现在设法生成带通滤波器,信号是多余的,对吗? –

相关问题