代码之家  ›  专栏  ›  技术社区  ›  Grumdrig

解释这个DSP符号

  •  3
  • Grumdrig  · 技术社区  · 16 年前

    this extenstion 关于Karplus强拉弦算法,但我不理解这里使用的符号。也许这需要多年的学习,但也许不会——也许你可以告诉我。

    P (z) ,拾取方向低通滤波器。对于一个方向,使用p=0,对于另一个方向,可能使用0.9。在第一种情况下,这归结为1,或0.1/(1-0.9 z) -1

    alt text http://www.dsprelated.com/josimages/pasp/img902.png

    现在,我觉得这可能意味着,用编码术语来说,这意味着:

    H_p(float* input, int time) {
      if (downpick) {
        return input[time];
      } else {
        return some_function_of(input[t], input[t-1]);
      }
    }
    

    有人能给我一个提示吗?或者这是徒劳的,我真的需要所有的DSP背景来实现这一点?我曾经是数学家……但这不是我的领域。

    1 回复  |  直到 16 年前
        1
  •  7
  •   Jason S    16 年前

    那么z -1

    让我们以H为例 P =(1-p)/(1-pz) ).

    如果我们遵循输入为“x”,输出为“y”的约定,传递函数H=y/x(=输出/输入)

    我们得到y/x=(1-p)/(1-pz) )

    或(1-p)x=(1-pz) -1 )y

    (1-p)x[n]=y[n]-py[n-1]

    或: y[n]=py[n-1]+(1-p)x[n]

    y += (1-p)*(x-y);
    

    除了将输出“y”本身用作状态变量之外,没有任何其他状态。或者,您也可以采用更直接的方法:

    y_delayed_1 = y;
    y = p*y_delayed_1 + (1-p)*x;
    

    Β -1 或1-z . (什么是N?)

    H=H0*(1+az) -1 -2 +cz -3 …)/(1+rz +深圳 -2 -3

    H0*(1+az) -1 +bz -2 +cz -3 …)*x=(1+rz +茨 -3 …)*y

    设计 大多数情况下,过滤器(选择a、b、c等)比实现它们更难。

    推荐文章