|
|
|
|
@ -11,43 +11,61 @@ Y=b1+b2*X и имеющую аргументы b1, b2 и X.
|
|
|
|
|
|
|
|
|
|
## Решение
|
|
|
|
|
```
|
|
|
|
|
def delays (signal, T):
|
|
|
|
|
for i in range(len(signal)):
|
|
|
|
|
signal[i] += T
|
|
|
|
|
return signal
|
|
|
|
|
|
|
|
|
|
>>> y = [random.gauss(3, 1.5) for _ in range(40)]#Входной сигнал
|
|
|
|
|
def delay_signal(signal, T):
|
|
|
|
|
|
|
|
|
|
# Создаю копию исходного сигнала
|
|
|
|
|
delayed_signal = signal.copy()
|
|
|
|
|
if T < len(signal):
|
|
|
|
|
# Сдвигаю сигнал вправо на T отсчетов, начало заполняем нулями
|
|
|
|
|
delayed_signal = [0] * T + signal[:-T]
|
|
|
|
|
else:
|
|
|
|
|
# Если задержка больше длины сигнала - возвращаем нули
|
|
|
|
|
delayed_signal = [0] * len(signal)
|
|
|
|
|
|
|
|
|
|
return delayed_signal
|
|
|
|
|
|
|
|
|
|
>>> y = [random.gauss(3, 1.5) for _ in range(40)]
|
|
|
|
|
>>> y
|
|
|
|
|
[3.5308366978488173, 0.006892666223876187, 1.2394771504589523, 2.0069405045596493, 3.3701806146667646, 4.568309578320961, 3.830576373772275, 5.089352582074263, 0.6086460457038703, 3.1769401246921265, 3.677587266397529, 4.042570885242653, 0.9287756515029977, 4.3904562576474095, 1.1736063571678461, 0.6917653051585262, 2.300866393101024, 2.6571601817161152, -1.098586574456716, 2.9743622204041698, 3.366759165331458, 1.8996085601865385, 2.973218126967005, 4.503496241270362, 4.2343496688138815, 0.9139308016811043, 3.340602488969483, 5.6955620693596245, 4.809363647837281, 0.44651663563187505, 4.662161337773905, 3.529505402423845, 2.738439309413467, 5.037519402382986, 2.5068399986117065, 3.4389064953446677, 3.3575710964945547, 3.021725105125102, 2.3955360493488564, 1.11368253377079]
|
|
|
|
|
[5.325416780634114, 2.3593622133749808, 1.2470676959301887, -0.593060108499694, 1.4340279482713292, 2.162904911751828, 3.5966381215435743, 3.1215233313521367, 3.278769015552392, 1.4600848702469413, 2.227188218562767, -0.02101290555432689, 2.9015754761132713, 5.507229347318583, 4.392918705255052, 2.893096608173657, 2.400184728443876, 2.3464420973774045, -0.29207940771891217, 4.868968794420769, 5.1569207689963275, 2.966999923764223, 0.9443978469937528, 5.562190945114451, 3.4834584941068765, 1.7250255447073042, 3.013873484634806, 3.783067951814041, 4.602220595567667, 2.283163010872606, 4.563248136396248, 5.370530689941988, -0.5394330191088121, 4.481730159619498, 2.6088804215267345, 3.562728440630803, 4.422684655442551, 1.846276163481897, 3.8925551687094426, 4.720299420830592]
|
|
|
|
|
|
|
|
|
|
>>> yd = delays(y, 4)
|
|
|
|
|
>>> yd = delay_signal(y, 4)
|
|
|
|
|
>>> yd
|
|
|
|
|
[7.530836697848818, 4.006892666223877, 5.239477150458953, 6.006940504559649, 7.370180614666765, 8.56830957832096, 7.830576373772275, 9.089352582074262, 4.60864604570387, 7.176940124692127, 7.677587266397529, 8.042570885242654, 4.928775651502997, 8.39045625764741, 5.173606357167846, 4.691765305158526, 6.300866393101024, 6.657160181716115, 2.901413425543284, 6.97436222040417, 7.366759165331458, 5.899608560186539, 6.973218126967005, 8.503496241270362, 8.23434966881388, 4.913930801681104, 7.340602488969483, 9.695562069359625, 8.80936364783728, 4.446516635631875, 8.662161337773906, 7.529505402423845, 6.738439309413467, 9.037519402382987, 6.5068399986117065, 7.438906495344668, 7.357571096494555, 7.0217251051251015, 6.3955360493488564, 5.11368253377079]
|
|
|
|
|
|
|
|
|
|
[0, 0, 0, 0, 5.325416780634114, 2.3593622133749808, 1.2470676959301887, -0.593060108499694, 1.4340279482713292, 2.162904911751828, 3.5966381215435743, 3.1215233313521367, 3.278769015552392, 1.4600848702469413, 2.227188218562767, -0.02101290555432689, 2.9015754761132713, 5.507229347318583, 4.392918705255052, 2.893096608173657, 2.400184728443876, 2.3464420973774045, -0.29207940771891217, 4.868968794420769, 5.1569207689963275, 2.966999923764223, 0.9443978469937528, 5.562190945114451, 3.4834584941068765, 1.7250255447073042, 3.013873484634806, 3.783067951814041, 4.602220595567667, 2.283163010872606, 4.563248136396248, 5.370530689941988, -0.5394330191088121, 4.481730159619498, 2.6088804215267345, 3.562728440630803]
|
|
|
|
|
|
|
|
|
|
import numpy as np
|
|
|
|
|
import random
|
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
|
|
|
|
|
|
def histo(data, num):
|
|
|
|
|
minval, maxval = min(data), max(data)
|
|
|
|
|
parts = np.linspace(minval, maxval, num + 1)
|
|
|
|
|
rows = [0] * num
|
|
|
|
|
for now in data:
|
|
|
|
|
for i in range(num):
|
|
|
|
|
if parts[i] <= now < parts[i + 1]:
|
|
|
|
|
rows[i] += 1
|
|
|
|
|
def calculate_histogram(data, num_bins):
|
|
|
|
|
min_val, max_val = min(data), max(data)
|
|
|
|
|
bins = np.linspace(min_val, max_val, num_bins + 1)
|
|
|
|
|
counts = [0] * num_bins
|
|
|
|
|
|
|
|
|
|
for value in data:
|
|
|
|
|
for i in range(num_bins):
|
|
|
|
|
if bins[i] <= value < bins[i + 1]:
|
|
|
|
|
counts[i] += 1
|
|
|
|
|
break
|
|
|
|
|
if now == maxval:
|
|
|
|
|
rows[-1] += 1
|
|
|
|
|
|
|
|
|
|
plt.hist(data, bins=parts)
|
|
|
|
|
if value == max_val:
|
|
|
|
|
counts[-1] += 1
|
|
|
|
|
|
|
|
|
|
return counts, bins
|
|
|
|
|
|
|
|
|
|
def plot_histogram(data, bins, counts):
|
|
|
|
|
"""
|
|
|
|
|
Построение и отображение гистограммы
|
|
|
|
|
"""
|
|
|
|
|
plt.hist(data, bins=bins, alpha=0.7, edgecolor='black')
|
|
|
|
|
plt.xlabel('Значения выборки')
|
|
|
|
|
plt.ylabel('Число элементов')
|
|
|
|
|
plt.title('Гистограмма выборки')
|
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
return rows
|
|
|
|
|
def histo(data, num_bins):
|
|
|
|
|
"""
|
|
|
|
|
Основная функция для работы с гистограммой
|
|
|
|
|
"""
|
|
|
|
|
counts, bins = calculate_histogram(data, num_bins)
|
|
|
|
|
plot_histogram(data, bins, counts)
|
|
|
|
|
return counts
|
|
|
|
|
|
|
|
|
|
sample = [random.gauss(random.random(), random.random()) for _ in range(random.randint(10,200))]
|
|
|
|
|
intervals = int(input("Введите количество интервалов разбиения: "))
|
|
|
|
|
|