def convolution(signal1, signal2): result_points = [] for n in range(len(signal1.points) + len(signal2.points) - 1): y = 0 for k in range(len(signal1.points)): if 0 <= n - k < len(signal2.points): y += signal1.points[k].y * signal2.points[n - k].y result_points.append(Point(n, y)) result_signal = Signal(None, 0, len(signal1.points) + len(signal2.points) - 1, 1) result_signal.points = result_points return result_signal
def quantization(signal, Ts, n_bits): result_signal = Signal(None, None, None, None) result_signal.points = signal.quantization(Ts, n_bits) signal_to_draw = Signal(None, None, None, None, False) signal_to_draw.points.append(signal.points[0]) new_ts = Ts / 2 for i in range(1, len(signal.points)): signal_to_draw.points.append( Point(signal.points[i - 1].x + new_ts, signal.points[i - 1].y)) signal_to_draw.points.append( Point(signal.points[i - 1].x + new_ts, signal.points[i].y)) signal_to_draw.points.append(signal.points[-1]) return result_signal, signal_to_draw
def read_file(file_path): with open(file_path, 'r') as file: start_time = file.readline() duration_time = file.readline() frequency = file.readline() points = file.readline() points = points.split() signal_points = [] for i in range(0, len(points), 2): signal_point = Point(float(points[i]), float(points[i + 1])) signal_points.append(signal_point) result = Signal(None, start_time, duration_time, frequency) result.points = signal_points return result
def foh(signal): reconstructed_signal = Signal(None, None, None, None, False) reconstructed_signal.points = deepcopy(signal.points) return reconstructed_signal