作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
维基百科说我们可以用以下方程式近似 Bark 标度:
b(f) = 13*atan(0.00076*f)+3.5*atan(power(f/7500,2))
如何在 Bark 刻度上将频谱划分为 n
个相同长度的区间(区间划分点在 Bark 刻度上等距)?
最好的方法是解析反函数(用y
的函数表示x
)。我试着在纸上做,但失败了。 WolframAlpha 搜索栏也做不到。我尝试了 Octave finverse
函数,但出现错误。
Octave 说(对于更简单的例子):
octave:2> x = sym('x');
octave:3> finverse(2*x)
error: `finverse' undefined near line 3 column 1
这是来自 Matlab 的 finverse
描述:http://www.mathworks.com/help/symbolic/finverse.html
也可以用数值方法来做到这一点。我可以想象你只是从平分 y
轴开始,通过二分法寻找理想的划分。但也许有一些现有的工具可以做到这一点?
最佳答案
您需要对这个方程进行数值求解(没有解析反函数)。将 b
的值等距设置并求解方程以找到各种 f
。二分法有点慢,但一个很好的替代方法是布伦特的方法。参见 http://en.wikipedia.org/wiki/Brent%27s_method
关于algorithm - 在近似的树皮尺度上获得等距间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12807340/
我是一名优秀的程序员,十分优秀!