加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

audio – 解释这个DSP表示法

发布时间:2020-12-15 08:31:37 所属栏目:Java 来源:网络整理
导读:我正在尝试实现 this extenstion的Karplus-Strong弹拨字符串算法,但我不明白那里使用的符号.也许它需要多年的学习,但也许它不会 – 也许你可以告诉我. 我认为下面的等式在频域或其他东西.刚开始使用第一个等式Hp(z),拾取方向低通滤波器.对于一个方向,你使用p
我正在尝试实现 this extenstion的Karplus-Strong弹拨字符串算法,但我不明白那里使用的符号.也许它需要多年的学习,但也许它不会 – 也许你可以告诉我.

我认为下面的等式在频域或其他东西.刚开始使用第一个等式Hp(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背景来实现这一点?我曾经是一名数学家……但这不是我的领域.

解决方法

所以z-1只意味着一个单位的延迟.

我们取Hp =(1-p)/(1-pz-1).

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

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

或(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]

在C代码中,这可以实现

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

除了使用输出“y”作为状态变量本身之外没有任何其他状态.或者你可以采用更直接的方法:

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

就其他方程式而言,它们都是典型的方程式,除了第二个方程式,看起来可能是选择HΒ= 1-z-1 OR 1-z-2的方式. (什么是N?)

过滤器有点模糊,除非你能找到一些预先包装好的过滤器,否则你会更难处理.一般来说,它们都是形式

H = H0 *(1 az-1 bz-2 cz-3 …)/(1 rz-1 sz-2 tz-3 ……)

你要做的就是写下H = y / x,交叉乘以得到

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

然后单独隔离“y”,使输出“y”成为其自身和输入的各种延迟的线性函数.

但是设计滤波器(选择a,b,c等)比实现它们更困难.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读