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

Matlab 将信号分解为n个大小相等的子带,matlab,frequency-distribution,bandpass-filter,Matlab,Frequency Distribution,Bandpass Filter,在我的Matlab脚本中,我加载了一个音频信号,然后我想将其分解为n个不同的子频带(并对每个频带执行不同的操作) 例如,假设我们有一个包含频率高达1KHz的信号,我想把它分成n=10个子带。(0-100Hz,100-200Hz,…,900-1Khz) 我将如何着手实现这样的目标?Matlab中是否有一些内置函数或一些外部Matlab库可以实现类似的功能?您可以对信号进行傅里叶变换。您可以获得高于奈奎斯特频率的重影频率,这是您可以使用正好一半的数据点表示的最高频率。这就给出了一个上限。可以表示的最

在我的Matlab脚本中,我加载了一个音频信号,然后我想将其分解为n个不同的子频带(并对每个频带执行不同的操作)

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


我将如何着手实现这样的目标?Matlab中是否有一些内置函数或一些外部Matlab库可以实现类似的功能?

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

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


然而,从你的帖子中可以明显看出,你对信号没有太多的经验,而且子频带可能不是你想要的。如果你想转换整个音频波,你会遇到连接操纵信号的问题,因为你必须在windows中应用fft。实际上,这并不像我所说的那么简单。

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

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


然而,从你的帖子中可以明显看出,你对信号没有太多的经验,而且子频带可能不是你想要的。如果你想转换整个音频波,你会遇到连接操纵信号的问题,因为你必须在windows中应用fft。事实上,这并不像我所说的那么简单。

好的,你提到的第一部分现在又回到了我的脑海中。是的,对于任何特定的波段,在波段外将系数设置为零感觉非常明显,但是我实际上是如何做到这一点的。例如,如何在FFT:ed信号中找到0-100 Hz频带?您需要设计一个中通滤波器。搜索术语“有限脉冲响应滤波器”和缩写词“FIR”。好的,谢谢你-现在查看一些带通滤波器-感觉是一个更好的解决方案。我猜FFT:如果我现在设法制作一个带通滤波器,那么对信号进行滤波是多余的,对吗?对,你提到的第一部分现在回到我的脑海中。是的,对于任何特定的波段,在波段外将系数设置为零感觉非常明显,但是我实际上是如何做到这一点的。例如,如何在FFT:ed信号中找到0-100 Hz频带?您需要设计一个中通滤波器。搜索术语“有限脉冲响应滤波器”和缩写词“FIR”。好的,谢谢你-现在查看一些带通滤波器-感觉是一个更好的解决方案。我想FFT:如果我现在设法制作一个带通滤波器,那么对信号进行滤波是多余的,对吗?