【发布时间】:2010-08-04 20:05:36
【问题描述】:
我不知道这是否可能,但我想我会问,我怀疑如果可能的话,它将在 - (void) renderFFTToTex 例程中进行更改。有没有人有关于这样做的任何想法或他们可以推荐的其他建议?谢谢。
【问题讨论】:
我不知道这是否可能,但我想我会问,我怀疑如果可能的话,它将在 - (void) renderFFTToTex 例程中进行更改。有没有人有关于这样做的任何想法或他们可以推荐的其他建议?谢谢。
【问题讨论】:
要重新调整频率,我们需要调整这个参数:
CGFloat yFract = (CGFloat)y / (CGFloat)(maxY - 1);
它的值介于 0..1 之间,并确定要在显示行 y 上显示的 fft 输出。
要获得对数刻度,首先进行数学运算:频率 f (0.1kHz-20kHz) 必须显示在位置 log(f) 上。调用下限 (0.1kHz) L,上限 (20kHz) H。然后经过一些数学运算 [[skipped]] 你得到:
yFract = ( exp(yFract*log(H/L)) - 1 ) / ( H/L - 1 );
您应该在哪里填写您认为的 H/L 比率,例如
yFract = ( exp(yFract*log(20)) - 1 ) / ( 20 - 1 );
(你应该检查 0 是否为 0 和 1 是否为 1,是这种情况)
【讨论】:
interpVal 的 sqrt 之后使用相同的逻辑。决定因素还是 H/L 比率。