# -*- coding: utf-8 -*-
"""
Collection of mathematical function signals
"""
from bms import Signal
from math import sin
[docs]class Step(Signal):
"""
Create a Step of amplitude beginning at time delay
"""
def __init__(self,name='Step',amplitude=1,delay=0,offset=0):
Signal.__init__(self,name)
def function(t):
if t<delay:
return offset
else:
return amplitude+offset
self.function=function
[docs]class Ramp(Signal):
"""
Create a ramp such as : f(t)=(t-delay)*amplitude+initial_value
"""
def __init__(self,name='Ramp',amplitude=1,delay=0,offset=0):
Signal.__init__(self,name)
def function(t):
if t<delay:
return offset
else:
return (t-delay)*amplitude+offset
self.function=function
[docs]class Sinus(Signal):
def __init__(self,name='Sinus',amplitude=1,w=1,phase=0,offset=0):
Signal.__init__(self,name)
self.function=lambda t:amplitude*sin(w*t+phase)+offset
[docs]class SignalFunction(Signal):
"""
User defined function for signal.
:param function: a function that will give the time values to the signal
"""
def __init__(self,name,function):
Signal.__init__(self,name)
self.function=function