在Matlab中设计一种简单的带通/带阻滤波器

在Matlab中设计一种简单的带通/带阻滤波器,matlab,signal-processing,fft,Matlab,Signal Processing,Fft,作为家庭作业,我必须在Matlab中设计一个简单的带通滤波器,它可以过滤掉250Hz到1000Hz之间的所有东西。到目前为止我所做的: -使用“enframe”函数创建半重叠窗口,每个窗口有512个样本。在窗口上,我应用hann窗口功能。 -在每个窗口上应用fft。在这之后,我用函数ifft重建原始信号,一切都很顺利 但问题是我必须如何解释fft函数的结果,以及如何过滤掉一个频带 这完全取决于您使用的采样率。 如果您根据的采样正确,那么您可以尝试使用的定义解释fft的采样 为了理解dft结果中的

作为家庭作业,我必须在Matlab中设计一个简单的带通滤波器,它可以过滤掉250Hz到1000Hz之间的所有东西。到目前为止我所做的: -使用“enframe”函数创建半重叠窗口,每个窗口有512个样本。在窗口上,我应用hann窗口功能。 -在每个窗口上应用fft。在这之后,我用函数ifft重建原始信号,一切都很顺利


但问题是我必须如何解释fft函数的结果,以及如何过滤掉一个频带

这完全取决于您使用的采样率。 如果您根据的采样正确,那么您可以尝试使用的定义解释fft的采样

为了理解dft结果中的哪个频率对应于哪个样本,我认为最好看一下。将系数k乘以

 exp(i*2*pi*k/N*n)
可以解释为余弦与。所以每个系数乘以一个特定频率的正弦


祝你好运;)

除非我弄错了,否则听起来你采取了错误的方法

如果你的任务是通过操纵FFT来操纵信号,那么忽略我。否则。。继续读下去

FFT通常用于分析频域中的信号。如果你开始摆弄FFT返回的复系数,那么你就进入了一个复杂的数学环境。这是特别的情况,因为你的截止频率不会很好地位于FFT频率上。此外,请记住,FFT并不是所分析信号的完美变换。它总是会介绍自己的人工制品,由于,和卷积与您的汉恩窗口

所以。。让我们留下FFT进行分析,然后构建一个滤波器

如果你在课堂上做带通设计,我假设你理解他们的工作。Matlab中有许多函数可以为不同类型的滤波器生成系数,例如,
butter
kaiser
cheby1
。在Matlab中查找他们的帮助页面以获取更多信息。您插入这些函数的值将取决于您的滤波器规格,即您想要“X”dB衰减和“Y”dB通带纹波。您需要了解这些过滤器是如何工作的,并了解它们的传递函数,以了解它们的过滤器顺序如何和您的规范相关

获得系数后,只需通过
filter
函数运行它们(再次..如果不确定其工作原理,请查看帮助页面)

强大的乔斯有一个伟大的带通滤波器设计演练


另一个小麻烦。。在您的问题中,您提到您希望您的过滤器“过滤掉”250Hz和1000Hz之间的所有内容。这有点模棱两可。如果你正在设计一个带通滤波器,你会想“通过”250Hz和1000Hz之间的一切。如果你确实想“过滤掉”这个范围内的所有东西,你需要一个带阻滤波器。

根据奈奎斯特定理,wav文件的采样率为16000Hz。问题是,我不完全理解DFT的定义。我在这里找到了一个非常好的解释,这对我很有帮助:对不起,是正确的吗?那么你知道如何构建过滤器了吗?