Math 如何在声卡上输出方波

Math 如何在声卡上输出方波,math,gnuplot,Math,Gnuplot,我想在我的声卡上创建一个数字(方形)信号。如果我能产生高频率,效果会很好。但是,由于我不能在声卡上输出直流电,对于较低的频率,产生的数字位都会慢慢衰减为0 这就是声卡高通对我的方波的作用: 信号的数学函数是什么,当通过高通时,它会变成正方形 理想情况下,该解决方案在gnuplot中演示。毫无疑问,您无法获得方波的良好近似值。声音硬件有意限制转换速率,不能产生超出预期频率范围的下降或上升边缘 您可以通过每N个采样交替使用高、低PCM代码(+max,-max)来近似严重变形的方波 不幸的是,你无法

我想在我的声卡上创建一个数字(方形)信号。如果我能产生高频率,效果会很好。但是,由于我不能在声卡上输出直流电,对于较低的频率,产生的数字位都会慢慢衰减为0

这就是声卡高通对我的方波的作用:

信号的数学函数是什么,当通过高通时,它会变成正方形


理想情况下,该解决方案在gnuplot中演示。

毫无疑问,您无法获得方波的良好近似值。声音硬件有意限制转换速率,不能产生超出预期频率范围的下降或上升边缘


您可以通过每N个采样交替使用高、低PCM代码(+max,-max)来近似严重变形的方波

不幸的是,你无法得到方波的良好近似值。声音硬件有意限制转换速率,不能产生超出预期频率范围的下降或上升边缘


您可以通过每N个采样交替使用高、低PCM代码(+max,-max)来近似严重变形的方波

你实际上不能产生真正的方波,因为它有无限的带宽。尽管如此,在频率介于10 Hz和1 kHz之间时(低于10 Hz时,声卡的模拟部分可能会出现问题等,而高于约1 kHz时,近似值将变得越来越不准确,因为您只能再现相对较少的谐波)


Tp生成波形采样值将在+/-某个值之间交替,例如满标度,对于16位PCM流为-32767和+32767。频率将由这些样本的周期决定。例如,对于44.1 kHz的采样率,如果你有100个-32767的样本,然后是100个+32767的样本,即周期=200个样本,那么你方波的基频将是44.1 kHz/200=220 Hz。

你实际上不能产生真正的方波,因为它有无限的带宽。尽管如此,在频率介于10 Hz和1 kHz之间时(低于10 Hz时,声卡的模拟部分可能会出现问题等,而高于约1 kHz时,近似值将变得越来越不准确,因为您只能再现相对较少的谐波)


Tp生成波形采样值将在+/-某个值之间交替,例如满标度,对于16位PCM流为-32767和+32767。频率将由这些样本的周期决定。例如,对于44.1 kHz的采样率,如果您有-32767的100个样本,然后是+32767的100个样本,即周期=200个样本,则您方波的基频将为44.1 kHz/200=220 Hz。

声卡会切断波形中的低频,所以你需要在你传递给它的东西中增加一些

方波包含许多频率(请参阅)。我怀疑产生校正方波的最简单方法是对傅里叶级数求和,提高低频分量的振幅以补偿声卡中的高通滤波器

为了计算出每个低频分量的升压量,首先需要测量声卡中高通滤波器的响应,方法是输出各种频率但振幅恒定的正弦波,并测量每个频率的比率
r(f)
输出振幅与输入振幅之比。然后,通过将方波傅里叶级数中每个频率分量
f
的振幅乘以
1/r(f)
(“逆滤波器”),可以生成方波输出的近似值


声卡中的高通滤波器也可能调整信号的相位。在这种情况下,最好将高通建模为一个(这可能是声卡进行滤波的方式),并从中反转振幅和相位响应。

声卡切断波形中的低频,因此您需要在传递到它的过程中将其提升一定量

方波包含许多频率(请参阅)。我怀疑产生校正方波的最简单方法是对傅里叶级数求和,提高低频分量的振幅以补偿声卡中的高通滤波器

为了计算出每个低频分量的升压量,首先需要测量声卡中高通滤波器的响应,方法是输出各种频率但振幅恒定的正弦波,并测量每个频率的比率
r(f)
输出振幅与输入振幅之比。然后,通过将方波傅里叶级数中每个频率分量
f
的振幅乘以
1/r(f)
(“逆滤波器”),可以生成方波输出的近似值


声卡中的高通滤波器也可能调整信号的相位。在这种情况下,最好将高通建模为(可能是声卡进行滤波的方式),并从中反转振幅和相位响应。

我找到了一个基于它的应用程序

您可以生成所需的格式,甚至可以生成所需的模式


代码使用。

我找到了一个基于它构建的应用程序

您可以生成所需的格式,甚至可以生成所需的模式


代码使用。

前面的一些答案正确地指出,正是高通滤波器(声卡输出上的交流耦合电容器)阻止了低频方波