Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

49 строки
1.1 KiB
Python

import math
def stats_on_signal(x, N):
NN = len(x)
if N <= 0 or N >= NN:
raise ValueError("N должно быть > 0 и < количества отсчётов сигнала")
part1 = x[:N]
part2 = x[N:]
M1 = sum(part1) / len(part1)
M2 = sum(part2) / len(part2)
def sample_var(data):
n = len(data)
m = sum(data) / n
return sum((v - m) ** 2 for v in data) / (n - 1)
C1 = sample_var(part1)
C2 = sample_var(part2)
return M1, M2, C1, C2, NN
def process_file(filename, N):
values = []
with open(filename, "r", encoding="utf-8") as f:
for line in f:
if not line.strip():
continue
for token in line.replace(",", " ").split():
values.append(float(token))
M1, M2, C1, C2, NN = stats_on_signal(values, N)
print(f"Число отсчётов NN = {NN}")
print(f"M1 = {M1}, M2 = {M2}")
print(f"C1 = {C1}, C2 = {C2}")
aaa = (C1 * N + C2 * (NN - N)) / (NN - 2)
t = abs(M1 - M2) / math.sqrt(aaa)
F = max(C1, C2) / min(C1, C2)
print(f"t = {t}")
print(f"F = {F}")
return values, t, F