форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
49 строки
1.1 KiB
Python
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
|