форкнуто от 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")
|
||||||
Загрузка…
Ссылка в новой задаче