如何为对数图创建每十年的点间距
How to create spacing of points per decade for logarithmic plot
简介
我的频率范围从 freq_start_hz = X
到 freq_stop_hz = Y
。
我正在尝试以对数方式(以 10 为底)space 输出范围 [freq_start_hz, freq_stop_hz]
之间的样本,基于每个 decade (num_samp_per_decade
) 的样本数量,包括端点。
我注意到 numpy
有一个方法 logspace
(link) 可以让你创建一些范围 base ** start
到 base ** stop
的对数除法样本总数,num
.
你能帮我创建 Python 每十年创建均匀对数间距的代码吗?
例子
freq_start_hz = 10
、freq_stop_hz = 100
、num_samp_per_decade = 5
这很简单,因为只有十年。因此可以使用以下方法创建它:
import numpy as np
from math import log10
freq_start_hz = 10
freq_stop_hz = 100
num_samp_per_decade = 5
freq_list = np.logspace(
start=log10(freq_start_hz),
stop=log10(freq_stop_hz),
num=num_samp_per_decade,
endpoint=False,
base=10,
)
freq_list = np.append(freq_list, freq_stop_hz) # Appending end
print(freq_list.tolist())
输出为[10.0, 17.78279410038923, 31.622776601683793, 56.23413251903491, 100.0]
注意:这很好用,因为我是这样设计的。如果 freq_start_hz = 8
,此方法不再有效,因为它现在跨越了数十年。
结论
我希望在某个地方,math
、numpy
、另一个 scipy
库或我的互联网搜索没有出现的其他库中有一个预制方法.
根据范围内的十进制数计算点数。
from math import log10
import numpy as np
start = 10
end = 1500
samples_per_decade = 5
ndecades = log10(end) - log10(start)
npoints = int(ndecades) * samples_per_decade
#a = np.linspace(log10(start), log10(end), num = npoints)
#points = np.power(10, a)
points = np.logspace(log10(start), log10(end), num=npoints, endpoint=True, base=10)
print(points)
简介
我的频率范围从 freq_start_hz = X
到 freq_stop_hz = Y
。
我正在尝试以对数方式(以 10 为底)space 输出范围 [freq_start_hz, freq_stop_hz]
之间的样本,基于每个 decade (num_samp_per_decade
) 的样本数量,包括端点。
我注意到 numpy
有一个方法 logspace
(link) 可以让你创建一些范围 base ** start
到 base ** stop
的对数除法样本总数,num
.
你能帮我创建 Python 每十年创建均匀对数间距的代码吗?
例子
freq_start_hz = 10
、freq_stop_hz = 100
、num_samp_per_decade = 5
这很简单,因为只有十年。因此可以使用以下方法创建它:
import numpy as np
from math import log10
freq_start_hz = 10
freq_stop_hz = 100
num_samp_per_decade = 5
freq_list = np.logspace(
start=log10(freq_start_hz),
stop=log10(freq_stop_hz),
num=num_samp_per_decade,
endpoint=False,
base=10,
)
freq_list = np.append(freq_list, freq_stop_hz) # Appending end
print(freq_list.tolist())
输出为[10.0, 17.78279410038923, 31.622776601683793, 56.23413251903491, 100.0]
注意:这很好用,因为我是这样设计的。如果 freq_start_hz = 8
,此方法不再有效,因为它现在跨越了数十年。
结论
我希望在某个地方,math
、numpy
、另一个 scipy
库或我的互联网搜索没有出现的其他库中有一个预制方法.
根据范围内的十进制数计算点数。
from math import log10
import numpy as np
start = 10
end = 1500
samples_per_decade = 5
ndecades = log10(end) - log10(start)
npoints = int(ndecades) * samples_per_decade
#a = np.linspace(log10(start), log10(end), num = npoints)
#points = np.power(10, a)
points = np.logspace(log10(start), log10(end), num=npoints, endpoint=True, base=10)
print(points)