EfremovSI 4 недель назад
Родитель 976924f0a5
Сommit e5542fd69f

@ -0,0 +1,27 @@
import pylab
from M2 import run_M2
def main():
X, X1 = run_M2()
# Построение графиков
pylab.figure(figsize=(10, 5))
pylab.subplot(1, 2, 1)
pylab.plot(X, label='Исходный сигнал')
pylab.title("Исходный сигнал")
pylab.xlabel("Отсчёты")
pylab.ylabel("Значение")
pylab.grid(True)
pylab.subplot(1, 2, 2)
pylab.plot(X1, label='Исправленный сигнал', color='orange')
pylab.title("Исправленный сигнал")
pylab.xlabel("Отсчёты")
pylab.ylabel("Значение")
pylab.grid(True)
pylab.tight_layout()
pylab.show()
if __name__ == "__main__":
main()

@ -0,0 +1,19 @@
def find_anomalous_indices(X, M1, M2):
indices = []
for i in range(1, len(X)):
diff = X[i] - X[i-1]
if diff < M1 or diff > M2:
indices.append(i)
return tuple(indices)
def correct_anomalies(X, K):
X1 = X.copy()
for idx in K:
if idx == len(X) - 1:
X1[idx] = X1[idx - 1]
else:
X1[idx] = 0.5 * (X1[idx - 1] + X1[idx + 1])
return X1

@ -0,0 +1,51 @@
# M2.py
import os
import sys
import pickle
def run_M2():
while True:
filename = input("Введите имя текстового файла с сигналом: ").strip()
if os.path.isfile(filename):
break
X = []
with open(filename, 'r') as f:
for line in f:
parts = line.strip().split()
for p in parts:
X.append(float(p))
while True:
M1 = float(input("Введите M1 (нижняя граница разности): "))
M2 = float(input("Введите M2 (верхняя граница разности, M2 > M1): "))
if M1 < M2:
break
else:
print("M1 должно быть меньше M2.")
from M1 import find_anomalous_indices, correct_anomalies
K = find_anomalous_indices(X, M1, M2)
print(f"Аномальные индексы: {K}")
if K:
X1 = correct_anomalies(X, K)
print("Исправленный сигнал:", X1)
with open("Res44.bin", "wb") as f:
pickle.dump(X1, f)
print("Результат записан в Res44.bin")
else:
print("Аномальных отсчётов не обнаружено.")
return X, X1 if K else X
Загрузка…
Отмена
Сохранить