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