我正在编写一个Python程序来产生多个正弦扫描,具有不同的开始和结束频率以及不同的时间间隔。一个接一个地计算多个正弦扫描
一个例子是:从0Hz
扫到在1毫秒
扫描170Hz从170Hz到170Hz在从170Hz 1个毫秒
扫下来到10Hz在1毫秒
所以它应该是一个斜坡上升,斜坡波形。
这从来就使用由this thread
def LinearSineSweep(self, fStart, fEnd, samplingTime, samplesPerSecond):
nValues = int(samplesPerSecond * samplingTime)
for i in range(0, nValues):
delta = float(i)/nValues
t = samplingTime * delta
phase = 2 * math.pi * t * (fStart + (fEnd - fStart) * delta/2)
return self._amplitude * math.sin(phase) + self._dcOffset
LinearSineSweep(0, 170, 0.001, 44100)
LinearSineSweep(170, 170, 0.001, 44100)
LinearSineSweep(170, 10, 0.001, 44100)
即使10次的频率依然没有按`吨走到一起作为一个波形
这是一个数学问题还是编程问题?
FYI:SciPy的提供功能'chirp'(http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal .chirp.html),它可以做到这一点(还有更多)。 –
是的,我想过这个,但啁啾返回一个数组,我的数据集太大而无法处理数组。 – AronC
您需要一种将呼叫阶段从一个呼叫转移到另一个呼叫的方式。您可以在图形中看到每毫秒将相位重置为零。 – jaket