方波积分

信息处理 声音的 低通滤波器 音乐 信号合成 一体化
2022-02-11 06:44:04

试图对积分器进行编程。我的输入是方波,我的预期输出应该是三角波。然而,每当我通过我的低通滤波器算法(只是一个 Q 为 0.707 的二阶巴特沃斯低通滤波器)时,我似乎从来没有得到三角波。相反,我得到了一个平滑的方波(我猜这类似于一个电容器将其平滑?)。我不确定如何解决这个问题,因为我对信号处理 + 算法有点陌生。任何帮助将不胜感激。

下面是我通过 Xcode 进行的示例测试的图片。我通过一个截止频率为 200 赫兹的低通发送 F3 音符(大约 349 赫兹),输出如下所示。这可能是我得到的最尖锐/最接近三角波的。 在此处输入图像描述

编辑:澄清一下,我正在尝试将方波转换为三角波(如果完全可行,最好通过低通滤波器)。

2个回答

如果您的方波的平均值为零(这很重要!),那么一个简单的累加器就可以完成这项工作。其操作描述为

是的[n]=X[n]+是的[n-1]

在哪里X[n]是输入(方波)和是的[n]是输出(三角波)。

这是一个简单的 Matlab/Octave 脚本,展示了它的工作原理:

sq = [1,-1,1,-1,1,-1,1,-1]'*ones(1,5);
平方 = 平方'(:); % 几个周期的方波
tr = 过滤器(1,[1,-1],sq); % 被累加器过滤
% 阴谋
子图(2,1,1),茎(sq)
子图(2,1,2),词干(tr)

在此处输入图像描述

方波的傅里叶级数告诉我们输入信号在基频的奇数倍处具有谐波f1=349Hz

fk=kf1,k odd
有振幅
Ak=4Akπ.

另一方面,三角波具有相同频率的谐波,但它们的幅度为

ķ=4一种ķ2π2.

因此,您的过滤器需要有增益ķ一种ķ在频率Fķ. 任何其他增益集都将产生不同于三角波的输出。请注意,我没有提到相位,但您需要确保您的滤波器具有线性相位。否则三角波会失真。

请注意,理想的积分器可以解决问题。一个实用的积分器也可以这样做,但它的带宽需要足够大,以免对更高频率的谐波引入额外的衰减。