форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
52 строки
1.7 KiB
Python
52 строки
1.7 KiB
Python
import os
|
|
import pickle
|
|
from MMM1 import find_anomal, cor_anom
|
|
|
|
def read_sig(filename):
|
|
numbers = []
|
|
try:
|
|
with open(filename, 'r', encoding='utf-8') as f:
|
|
for line in f:
|
|
parts = line.strip().split()
|
|
for part in parts:
|
|
try:
|
|
numbers.append(float(part))
|
|
except ValueError:
|
|
continue
|
|
except Exception as e:
|
|
print(f"Ошибка чтения файла: {e}")
|
|
return None
|
|
return numbers
|
|
|
|
def main_pr():
|
|
while True:
|
|
filename = input("Введите имя текстового файла с сигналом: ")
|
|
if os.path.isfile(filename):
|
|
break
|
|
print("Файл не найден. Попробуйте снова.")
|
|
|
|
X = read_sig(filename)
|
|
if X is None:
|
|
print("Не удалось прочитать сигнал.")
|
|
return
|
|
|
|
M1 = float(input("Введите M1 (нижняя граница): "))
|
|
M2 = float(input("Введите M2 (верхняя граница): "))
|
|
|
|
anomalies = find_anomal(X, M1, M2)
|
|
if anomalies:
|
|
print(f"Индексы аномальных отсчетов: {anomalies}")
|
|
else:
|
|
print("Индексов аномальных отcчетов нет")
|
|
|
|
if anomalies:
|
|
X1 = cor_anom(X, anomalies)
|
|
|
|
with open('Res44.bin', 'wb') as f:
|
|
pickle.dump(X1, f)
|
|
print("Результат сохранён в файл Res44.bin")
|
|
else:
|
|
print("Аномальных отсчетов не обнаружено.")
|
|
|
|
return X, X1 if anomalies else None
|