форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
53 строки
1.3 KiB
Python
53 строки
1.3 KiB
Python
import os
|
|
from M1 import find_anomalous, correct_signal
|
|
|
|
def get_file():
|
|
while True:
|
|
name = input("Имя файла: ")
|
|
if (os.getcwd() + "/TEMA9/" + name):
|
|
return (os.getcwd() + "/TEMA9/" + name)
|
|
print("Файл не найден")
|
|
|
|
def get_M():
|
|
while True:
|
|
try:
|
|
M1 = float(input("M1: "))
|
|
M2 = float(input("M2: "))
|
|
if M1 < M2:
|
|
return M1, M2
|
|
print("M1 должно быть < M2")
|
|
except:
|
|
print("Введите числа")
|
|
|
|
def read_file(filename):
|
|
X = []
|
|
with open(filename, 'r') as f:
|
|
for line in f:
|
|
for num in line.split():
|
|
X.append(float(num))
|
|
return X
|
|
|
|
def save_binary(X1):
|
|
with open(os.getcwd() + "/TEMA9/Res44.bin", 'wb') as f:
|
|
for val in X1:
|
|
f.write(str(val).encode() + b' ')
|
|
|
|
def main():
|
|
filename = get_file()
|
|
|
|
X = read_file(filename)
|
|
print(f"Прочитано {len(X)} значений")
|
|
|
|
M1, M2 = get_M()
|
|
|
|
K = find_anomalous(X, M1, M2)
|
|
print(f"Аномалии: {K}")
|
|
|
|
if K:
|
|
X1 = correct_signal(X, K)
|
|
print(f"Исправлено: {X1[:10]}...")
|
|
save_binary(X1)
|
|
else:
|
|
print("Аномалий нет")
|
|
|
|
return X, X1 if K else None |