首页 > 解决方案 > 一种在连续数组上维护索引指针的方法

问题描述

在 Python 中,我目前正在尝试为我喜欢的特定吉他即兴演奏创建每个音符的频率可视化

为了做到这一点并让 matplotlib.pyplot 绘制点,我为每个音符做这样的事情,但最终将在特定点对 2 个特定频率的 y 值求和

import numpy
import matplotlib.pyplot as plt

t_per_beat = 110/60.0 #tempo is 110 bpm, finding no of seconds per beat

#creating range of x values for 8 beats of music, in this case 2 bars
x0 = numpy.linspace(0, t_per_beat * 8, 100)
a = []
#generate y-axis values
for i in x0:
    a.append(numpy.sin(<note_freq> * i)

我希望 y 轴值像 x 轴一样连续,所以绘制点的数组是最好的,但我也希望能够索引数组中的特定间隔,直到“十六分音符”的粒度(t_per_beat/4)

因为我的笔记的频率值可能会增加(所以我需要增加我的 numpy.linspace 数组中的点数,我不能保证整个数组的索引号间隔是一致的。

当然,拆分成一个单独的数组的容器(即:二维列表)会更好,但是波的建模意味着 2 个波在节拍边界上合并,这并不是很理想。

从本质上讲,我的问题是(在没有我没有想到的更好解决方案的情况下),是否有逻辑来存储对数组中的一段数据的引用,这样当被调用时,我总能在其中找到所述数据的索引阵列?

标签: pythonarraysnumpymatplotlib

解决方案


推荐阅读