diff --git a/src/cbadc/analog_signal/_analog_signal.py b/src/cbadc/analog_signal/_analog_signal.py index 045c53b..081f6b4 100644 --- a/src/cbadc/analog_signal/_analog_signal.py +++ b/src/cbadc/analog_signal/_analog_signal.py @@ -68,6 +68,11 @@ def __div__(self, other): class ModulatedSignal(_AnalogSignal): def __init__(self, *signals: _AnalogSignal): self._signals = signals + # Check if piecewise constant + self.piecewise_constant = True + for signal in self._signals: + if not signal.piecewise_constant: + self.piecewise_constant = False def evaluate(self, t: float) -> float: """Evaluate the signal at time :math:`t`. @@ -98,6 +103,11 @@ class SuperpositionSignal(_AnalogSignal): def __init__(self, *signals: _AnalogSignal): self._signals = signals + # Check if piecewise constant + self.piecewise_constant = True + for signal in self._signals: + if not signal.piecewise_constant: + self.piecewise_constant = False def evaluate(self, t: float) -> float: """Evaluate the signal at time :math:`t`. diff --git a/src/cbadc/analog_signal/impulse_responses.py b/src/cbadc/analog_signal/impulse_responses.py index 234e9dd..2ab87de 100644 --- a/src/cbadc/analog_signal/impulse_responses.py +++ b/src/cbadc/analog_signal/impulse_responses.py @@ -1,4 +1,5 @@ """Analog impulse response signals from common linear systems.""" + from typing import Union import numpy as np import sympy as sp @@ -10,6 +11,7 @@ class _ImpulseResponse(_AnalogSignal): def __init__(self): super().__init__() self.t0 = 0.0 + self.piecewise_constant = True class StepResponse(_ImpulseResponse): diff --git a/src/cbadc/simulator/numerical_simulator.py b/src/cbadc/simulator/numerical_simulator.py index 046836e..c83e06b 100644 --- a/src/cbadc/simulator/numerical_simulator.py +++ b/src/cbadc/simulator/numerical_simulator.py @@ -375,7 +375,9 @@ def _pre_computations(self): tf = self.analog_system.transfer_function_matrix( np.array([analog_signal.angularFrequency]) ) - self._pre_computed_transfer_function[0, :, l] = np.abs(tf[:, l_index, 0]) + self._pre_computed_transfer_function[0, :, l] = ( + np.abs(tf[:, l_index, 0]) * analog_signal.amplitude + ) self._pre_computed_transfer_function[1, :, l] = ( np.angle(tf[:, l_index, 0]) + analog_signal.phase )