在编码DSP信号链时如何处理循环依赖?

时间:2014-04-09 23:58:13

标签: c graph filtering signal-processing

我正在研究将自己的3D音频渲染系统编码为一个教育项目,因为我已经确定像OpenAL这样的技术过于面向设备并且缺乏我的使用功能。我希望它尽可能灵活。为此,我已经开始考虑如何对其进行编码,以便我可以在使用它的程序中从较小的部分构建信号链。我可以从概念上处理一切只是非循环路径的情况,但不知道如何处理循环。也就是说,当一个对象依赖于其当前输出样本来直接或间接地计算其当前输出信号时,如何处理这种情况?我能想到的唯一两件事就是:程序进入无限循环并崩溃,或者在发生这种依赖时人为地增加延迟。研究没有提供有关这个问题的信息。

2 个答案:

答案 0 :(得分:1)

欢迎使用Stack Overflow!

您正在寻找的技术称为无限脉冲响应(IIR)过滤器

http://en.wikipedia.org/wiki/Infinite_impulse_response


正如您所怀疑的那样,没有任何延迟的循环循环在脉冲响应函数方面没有多大意义。

有些域中没有延迟的循环循环是有意义的。那些将是迭代系统。 Casuality在这些系统中也不是问题。取整个值A [index],将其传递给函数,得到另一组值B [index]。 A"转换" (例如离散傅里叶变换)将适合该描述。这可能远远超出了你的项目范围(或讨论)。


单位延迟通常表示为(Z)^(-1)(请参阅维基百科文章中的图表,以正确呈现该符号。)

此表示法来自Z-transform,这是一种与Fourier transformLaplace transform密切相关的数学工具。


粗略地说,

  • 拉普拉斯变换用于分析连续时间系统的瞬态状态
  • 傅里叶变换用于分析:
    • 稳态连续时间系统
    • 频域
    • 定期系统
  • Z变换用于分析离散时间系统的瞬态状态,例如您正在处理的系统。

Stack Exchange网络在http://dsp.stackexchange.com

有一个用于数字信号处理的姐妹站点

然而,预计DSP网站的新成员至少对DSP有基本的了解(大致相当于采用第一个"信号和系统"大学水平的课程,或等同的自我...研究。)

希望你能从你的项目中获得很多知识。

答案 1 :(得分:0)

据我所知,所有实时音频软件都会增加延迟或完全不允许反馈路径。

这远远超出了我的知识领域,但根据我的理解,电子电路模拟器(Spice等)会将反馈考虑在内。也许您可以看到他们使用的技术。