форкнуто от main/python-labs
Родитель
0e3d06f367
Сommit
2cc1b33105
@ -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()
|
||||
@ -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
|
||||
@ -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")
|
||||
Загрузка…
Ссылка в новой задаче