python - 同时以 0.5 的间隔迭代 2 个变量
问题描述
我正在尝试计算 40.8 秒音频文件的每 0.5 帧的平均音高。我已经用 Python 编写了以下代码,但是在打印 i 和 j 之后,我认为这不是实现它的正确方法。
import itertools
def seq(start, end, step):
if step == 0:
raise ValueError("step must not be 0")
sample_count = int(abs(end - start) / step)
return itertools.islice(itertools.count(start, step), sample_count)
for i in seq(startTime, endTime, 0.5):
for j in seq(startTime+0.5, endTime+0.5, 0.5):
meanPitch = call(pitch, "Get mean", i, j, unit) # get mean pitch
return(meanPitch)
所以代码应该首先返回 0 秒到 0.5 秒之间的音频帧的平均音高,然后是 0.5 到 1.0 秒之间的平均音高,等等。这应该一直持续到结束时间(40.83 秒)。任何关于我哪里出错的建议将不胜感激!
解决方案
打印 i 和 j 后,我认为这不是正确的方法
将 40.8 秒分成 1/2 秒的间隔可以得到大约 82 个间隔。您可以迭代 0-82 和 1-82,然后乘以 0.5 以获得每个间隔的开始和结束。
import math
n = 40.8
step = .5
n = math.ceil(n/step)
one = range(n)
two = range(1,n+1)
for i,j in zip(one,two):
print(i*.5,j*.5)
或者只是迭代一个并计算另一个。
for i in one:
i *= step
j = i + step
print(i,j)
推荐阅读
- c - 在 cygwin 中编译 linux C 程序时遇到问题
- node.js - 在nodejs中显示2两个表记录
- java - 程序编译但随后在线程“main”java.util.IllegalFormatConversionException 中给出错误异常:d!= java.lang.Double?
- php - php图像调整大小但调整大小后不保存
- ios - 实现Bitcode的最佳方式?
- postgresql - 如何使用查询尽可能快地将批量数据从表中加载到表中?(postgresql)
- c - C - fgets 如何处理多个调用
- python - 通过python在列表中查找不同的对
- linux - 无法在 linux 上打开 chromedriver
- dll - 从自定义位置注册库的环境变量(OCX、DLL)