将信号分解为n个大小相等的子带

时间:2017-06-12 14:55:01

标签: matlab frequency-distribution bandpass-filter

在我的Matlab脚本中,我加载了一个音频信号,我想将其分解为n个不同的子频段(并为每个频段做不同的事情)。

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

我将如何实现这样的目标? Matlab中是否有一些内置函数或者某些外部Matlab库可以实现类似的东西?

1 个答案:

答案 0 :(得分:2)

你傅里叶变换信号。您可以获得高于奈奎斯特频率的重影频率,这是您使用正好一半数据点可以表示的最高频率。所以这给了一个上限。您可以表示的最低频率是直流偏置。

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

然而,从您的帖子中可以明显看出,您对信号没有多少经验,而且子频段可能不是您想要的。如果要转换整个音频波,则在连接被操纵的信号时会出现问题,因为您必须在窗口中应用fft。它实际上并不像我提出的那么容易。