From e5542fd69fc186ac4130051681496521ba18cb2a Mon Sep 17 00:00:00 2001 From: EfremovSI Date: Mon, 15 Dec 2025 08:47:47 +0000 Subject: [PATCH] modules for test --- TEMA9/M0.py | 27 +++++++++++++++++++++++++++ TEMA9/M1.py | 19 +++++++++++++++++++ TEMA9/M2.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 TEMA9/M0.py create mode 100644 TEMA9/M1.py create mode 100644 TEMA9/M2.py diff --git a/TEMA9/M0.py b/TEMA9/M0.py new file mode 100644 index 0000000..ce1ee7e --- /dev/null +++ b/TEMA9/M0.py @@ -0,0 +1,27 @@ +import pylab +from M2 import run_M2 + +def main(): + X, X1 = run_M2() + + # Построение графиков + pylab.figure(figsize=(10, 5)) + pylab.subplot(1, 2, 1) + pylab.plot(X, label='Исходный сигнал') + pylab.title("Исходный сигнал") + pylab.xlabel("Отсчёты") + pylab.ylabel("Значение") + pylab.grid(True) + + pylab.subplot(1, 2, 2) + pylab.plot(X1, label='Исправленный сигнал', color='orange') + pylab.title("Исправленный сигнал") + pylab.xlabel("Отсчёты") + pylab.ylabel("Значение") + pylab.grid(True) + + pylab.tight_layout() + pylab.show() + +if __name__ == "__main__": + main() diff --git a/TEMA9/M1.py b/TEMA9/M1.py new file mode 100644 index 0000000..3b44519 --- /dev/null +++ b/TEMA9/M1.py @@ -0,0 +1,19 @@ +def find_anomalous_indices(X, M1, M2): + + indices = [] + for i in range(1, len(X)): + diff = X[i] - X[i-1] + if diff < M1 or diff > M2: + indices.append(i) + return tuple(indices) + + +def correct_anomalies(X, K): + + X1 = X.copy() + for idx in K: + if idx == len(X) - 1: + X1[idx] = X1[idx - 1] + else: + X1[idx] = 0.5 * (X1[idx - 1] + X1[idx + 1]) + return X1 diff --git a/TEMA9/M2.py b/TEMA9/M2.py new file mode 100644 index 0000000..81744cf --- /dev/null +++ b/TEMA9/M2.py @@ -0,0 +1,51 @@ +# M2.py +import os +import sys +import pickle + +def run_M2(): + + while True: + filename = input("Введите имя текстового файла с сигналом: ").strip() + if os.path.isfile(filename): + break + + + + X = [] + with open(filename, 'r') as f: + for line in f: + parts = line.strip().split() + for p in parts: + X.append(float(p)) + + + while True: + + M1 = float(input("Введите M1 (нижняя граница разности): ")) + M2 = float(input("Введите M2 (верхняя граница разности, M2 > M1): ")) + if M1 < M2: + break + else: + print("M1 должно быть меньше M2.") + + + from M1 import find_anomalous_indices, correct_anomalies + + + K = find_anomalous_indices(X, M1, M2) + print(f"Аномальные индексы: {K}") + + + if K: + X1 = correct_anomalies(X, K) + print("Исправленный сигнал:", X1) + + + with open("Res44.bin", "wb") as f: + pickle.dump(X1, f) + print("Результат записан в Res44.bin") + else: + print("Аномальных отсчётов не обнаружено.") + + return X, X1 if K else X