首页 > 解决方案 > 同时以 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 秒)。任何关于我哪里出错的建议将不胜感激!

标签: pythonfor-loopincrement

解决方案


打印 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)

推荐阅读