等距对数刻度点

信息处理 频率
2022-02-06 05:24:21

我有一个 x 轴,它以对数刻度表示频率,我想在这个轴上有在对数刻度上等距的 NumPoints,我有以下变量:

Fmin = 100 Fmax = 4000 或 8000 NumPoints = 10

我应该使用什么公式来计算 Fmin 和 Fmax 之间的 NumPoints-2 点应该去哪里?(Fmin 和 Fmax 应该各有一个点)

此外,当我从 Fmax = 4000 -> 8000 切换时,我想保持已经在 Fmin->4000 之间计算的等距点,并在 4000 和 8000 之间添加额外的点。

概括

在 FMan -> Fmax(4000) 之间生成 NumPoints,在对数刻度上等距。更改 Fmax -> 8000 在 4000->8000 之间生成更多点。

提前谢谢了

安迪

2个回答

记录你的四肢,找到你的点,就好像它在这些四肢之间的线性比例上一样,取结果的指数。

例子:

你四肢的日志是您在这些值之间的线性刻度上的 10 个点将是:log100log4000log100+klog4000log1009k{0,1,,9}

取指数:请注意,第一个和最后一个值是预期的 100 和 4000。elog100+klog4000log1009

这适用linspace于具有此原语的编程语言,例如 python/numpy:

numpy.exp(numpy.linspace(numpy.log(100), numpy.log(4000), 10))

你问题的第二部分不清楚。要通过保持相同间距生成更多点,请继续将增加到9 以上。k

由于它是对数刻度,因此两个相邻点之间的比率是恒定的,即通过乘法得到下一个点:x[n] = x[n-1]*k。十次乘法后,您需要从 100 到 4000,因此 k 可以确定为您的 x 点就是k=(4000/100)1/(n1)=1.5066x[n]=100kn

      100
   150.66
   226.99
      342
   515.26
   776.31
   1169.6
   1762.2
   2654.9
     4000

但是,您不能完全达到 8000。下一个点是 6026.5 和 9079.7。让您非常接近的是从 99.213 到 4000 的 17 个点,下一个点是 5039.7 6349.6 和 8000。