我正在編寫一個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