diff --git a/Tests/test3/M0.py b/Tests/test3/M0.py new file mode 100644 index 0000000..bd08921 --- /dev/null +++ b/Tests/test3/M0.py @@ -0,0 +1,26 @@ +# M0.py +import M2 # Импортируем модуль M2 +import matplotlib.pyplot as plt + +def plot_results(): + """ + Вызывает M2, считывает результаты из файла и отображает их в виде графика. + """ + M2.run_analysis() # Запускаем анализ из модуля M2 + + try: + with open("Res11.bin", 'r') as f: + SS3 = [float(line.strip()) for line in f] + except FileNotFoundError: + print("Ошибка: Файл Res11.bin не найден.") + return + + plt.plot(SS3) + plt.xlabel("Индекс") + plt.ylabel("Значение") + plt.title("График списка SS3") + plt.grid(True) + plt.show() + +if __name__ == "__main__": + plot_results() diff --git a/Tests/test3/M1.py b/Tests/test3/M1.py new file mode 100644 index 0000000..c949040 --- /dev/null +++ b/Tests/test3/M1.py @@ -0,0 +1,26 @@ +# M1.py +import random + +def generate_data_file(filename, num_samples=50, mean=0, std_dev=1): + """Генерирует файл с нормально распределенными случайными данными.""" + import numpy as np + data = np.random + print(f"Файл {filename} сгенерирован.") + +def read_signal_and_shift(filename, TAU, K): + N = len(SPS1) + SPS2 = [0] * (TAU - 1) + [K * SPS1[i - TAU] for i in range(TAU - 1, N)] + + return SPS1, SPS2 + +def calculate_D(SS1, SS2, TT): + + N = len(SS1) + SR1 = sum(SS1) / N + SR2 = sum(SS2) / len(SS2) + + D = 0 + for i in range(TT, N): + D += (SS1[i] - SR1) * (SS2[i - TT] - SR2) + + return D diff --git a/Tests/test3/M2.py b/Tests/test3/M2.py new file mode 100644 index 0000000..8099b58 --- /dev/null +++ b/Tests/test3/M2.py @@ -0,0 +1,39 @@ +# M2.py +import M1 # Импортируем модуль M1 +import random + +def run_analysis(): + + while True: + filename = input("Введите имя текстового файла с данными: ") + try: + with open(filename, 'r'): + break + except FileNotFoundError: + print("Файл не найден. Повторите ввод.") + + while True: + try: + TAU = int(input("Введите значение параметра TAU (>= 0): ")) + if TAU >= 0: + break + else: + print("TAU должно быть >= 0.") + except ValueError: + print("Некорректный ввод. Введите целое число.") + + K = random.uniform(2, 7) + SPS1, SPS2 = M1.read_signal_and_shift(filename, TAU, K) + + print("SPS1:", SPS1) + print("SPS2:", SPS2) + + SS3 = [] + for TT in range(0, TAU + 6): + D = M1.calculate_D(SPS1, SPS2, TT) + SS3.append(D) + + with open("Res11.bin", 'w') as f: + for value in SS3: + f.write(str(value) + '\n') + print("Результаты записаны в файл Res11.bin")