gpt4 book ai didi

python - 如何为对数图创建每十年的点间距

转载 作者:行者123 更新时间:2023-12-01 07:28:50 26 4
gpt4 key购买 nike

简介

我有一些频率范围,从 freq_start_hz = Xfreq_stop_hz = Y

我正在尝试根据每个 decade 的样本数量,以对数方式(以 10 为底)在 [freq_start_hz, freq_stop_hz] 范围之间间隔出样本。 (num_samp_per_decade),包括端点。

我注意到numpy有一个方法logspace(link),它使您能够创建某个范围base ** start的对数除法根据样本总数 numbase ** stop

你能帮我创建可以创建每十年均匀对数间距的 Python 代码吗?

示例

freq_start_hz = 10freq_stop_hz = 100num_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,则此方法不再有效,因为它现在跨越了数十年。

结论

我希望在 mathnumpy、另一个 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)

关于python - 如何为对数图创建每十年的点间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57316723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com