def setSinusoidalWaveform(self,
waveTableId,
append,
lengthInPoints,
amplitudeOfTheSineCurve,
offsetOfTheSineCurve,
wavelengthOfTheSineCurveInPoints,
startPoint,
curveCenterPoint):
'''
See description of PI_WAV_SIN_P in PI GCS 2.0 DLL doc
'''
curveCenterPoint= int(round(curveCenterPoint))
wavelengthOfTheSineCurveInPoints= \
int(round(wavelengthOfTheSineCurveInPoints))
startPoint= int(round(startPoint))
lengthInPoints= int(round(lengthInPoints))
assert append == WaveformGenerator.CLEAR, 'only CLEAR implemented'
assert startPoint >= 0
assert startPoint < lengthInPoints
assert curveCenterPoint >= 0
assert startPoint + curveCenterPoint < lengthInPoints
ccUp= 0.5* curveCenterPoint
rampUp= 0.5 * amplitudeOfTheSineCurve* (1 + np.sin(
np.arange(-ccUp, ccUp) / ccUp * np.pi / 2))
ccDown= 0.5* (wavelengthOfTheSineCurveInPoints - curveCenterPoint)
rampDown= 0.5 * amplitudeOfTheSineCurve* (1 - np.sin(
np.arange(-ccDown, ccDown) / ccDown * np.pi / 2))
waveform= np.zeros(lengthInPoints) + offsetOfTheSineCurve
waveform[0: curveCenterPoint]= offsetOfTheSineCurve + rampUp
waveform[curveCenterPoint: wavelengthOfTheSineCurveInPoints]= \
offsetOfTheSineCurve + rampDown
waveform= np.roll(waveform, startPoint)
self._waveform[waveTableId]= waveform
评论列表
文章目录