Exemplo n.º 1
0
class AnalogSwitch(Filter):
    def __init__(self):
        self.blockActivated = True
        self.samplingSignal = None

    def control_by_sampling_signal(self, sampling_signal):
        self.samplingSignal = Signal(sampling_signal.timeArray)
        self.samplingSignal.copy_signal(sampling_signal)

    def deactivate_block(self, deactivate):
        self.blockActivated = not deactivate

    def apply_to_signal(self, signal_in):
        returning_signal = Signal(None)
        returning_signal.copy_signal(signal_in)
        if self.blockActivated:

            out_x_array = signal_in.timeArray.copy()
            out_y_array = signal_in.yValues.copy()

            for it in range(0, len(signal_in.timeArray)):
                if self.samplingSignal.yValues[it] > 0.5:  # Chequea si la senal de sampleo esta activa
                    out_y_array[it] = signal_in.yValues[it]
                else:
                    out_y_array[it] = 0

            returning_signal.set_x_y_values(out_x_array, out_y_array)
            returning_signal.set_step_plot(True)
        return returning_signal

    def get_filter_freq_response(self):
        return self.angularFreq, self.freqResponse
Exemplo n.º 2
0
class SampleAndHold(Filter):
    def __init__(self):
        self.blockActivated = True
        self.samplingSignal = None

    def control_by_sampling_signal(self, sampling_signal):
        self.samplingSignal = None
        self.samplingSignal = Signal(sampling_signal.timeArray)
        self.samplingSignal.copy_signal(sampling_signal)

    def deactivate_block(self, deactivate):
        self.blockActivated = not deactivate

    def apply_to_signal(self, signal_in):
        returning_signal = Signal(None)
        returning_signal.copy_signal(signal_in)

        if self.blockActivated:

            out_x_array = signal_in.timeArray.copy()
            out_y_array = signal_in.yValues.copy()

            for it in range(0, len(signal_in.timeArray)):
                if self.samplingSignal.yValues[it] > 0.4:  # Chequea si la senal de sampleo esta activa
                    out_y_array[it] = signal_in.yValues[it]
                else:
                    if it > 0 and out_y_array[it - 1] is not None:
                        out_y_array[it] = out_y_array[it - 1]
                    else:
                        out_y_array[it] = 0

            returning_signal.set_x_y_values(out_x_array, out_y_array)
            returning_signal.set_step_plot(True)
        return returning_signal
Exemplo n.º 3
0
 def add_signal_to_oscilloscope(self, signal):
     if self.hidden:
         self.hidden = False
         self.__show_oscilloscope__()
     new_signal = Signal(signal.timeArray)
     new_signal.copy_signal(signal)
     self.plot_signals.append(new_signal)
     list_widget_item = QListWidgetItem(new_signal.description)
     self.signalList.addItem(list_widget_item)
     self.plot_current_signals()
Exemplo n.º 4
0
    def apply_to_signal(self, signal_in):
        returning_signal = Signal(None)
        returning_signal.copy_signal(signal_in)
        if self.blockActivated:

            out_x_array = signal_in.timeArray.copy()
            out_y_array = signal_in.yValues.copy()

            for it in range(0, len(signal_in.timeArray)):
                if self.samplingSignal.yValues[it] > 0.5:  # Chequea si la senal de sampleo esta activa
                    out_y_array[it] = signal_in.yValues[it]
                else:
                    out_y_array[it] = 0

            returning_signal.set_x_y_values(out_x_array, out_y_array)
            returning_signal.set_step_plot(True)
        return returning_signal
Exemplo n.º 5
0
 def apply_to_signal(self, signal_in):
     returning_signal = Signal(None)
     returning_signal.copy_signal(signal_in)
     if self.blockActivated:
         if 1 / signal_in.period <= 3.9:
             tout, y, ni = signal.lsim(
                 (self.b1, self.a1), signal_in.yValues, signal_in.timeArray)
             returning_signal.set_x_y_values(tout, y)
             returning_signal.cut_first_period()
         elif 3510 >= 1 / signal_in.period > 3.9:
             tout, y, ni = signal.lsim(
                 (self.b2, self.a2), signal_in.yValues, signal_in.timeArray)
             returning_signal.set_x_y_values(tout, y)
             returning_signal.cut_first_period()
         else:
             tout, y, ni = signal.lsim(
                 (self.b3, self.a3), signal_in.yValues, signal_in.timeArray)
             returning_signal.set_x_y_values(tout, y)
             returning_signal.cut_first_period()
     return returning_signal
Exemplo n.º 6
0
    def get_signal(self, signal_order):
        returning_signal = Signal(None)
        if self.signals[signal_order] is not None:

            returning_signal.copy_signal(self.signals[signal_order])
            return returning_signal
        else:
            found = False
            i = signal_order - 1
            while not found and i >= 0:
                if self.signals[i] is not None:
                    found = True
                else:
                    i -= 1
            if not found:
                return None
            else:
                for it in range(i, signal_order):
                    self.signals[it + 1] = self.blocks[it].apply_to_signal(
                        self.signals[it])

                returning_signal.copy_signal(self.signals[signal_order])

                return returning_signal
Exemplo n.º 7
0
 def add_signal(self, signal, signal_order):
     new_aux = Signal(signal.timeArray)
     new_aux.copy_signal(signal)
     self.signals[signal_order] = new_aux