Виды сигналов
Раскладываем сигналы по полочкам: эта классификация подсказывает, какой инструмент DSP применять.
Дискретный сигнал — последовательность чисел
x[n], заданная для целых индексовn; квадратные скобки подчёркивают, что аргумент — номер отсчёта, а не непрерывное время.
Сигналы бывают очень разными, и от их типа зависит выбор метода. Периодический тон анализируют рядом Фурье; случайный шум описывают статистикой; короткий импульс — свёрткой. Разберём основные оси классификации.
Непрерывные и дискретные
Непрерывный сигнал x(t) определён в любой момент t (круглые скобки). Дискретный x[n] — только в целых точках n = 0, 1, 2, ... (квадратные скобки). DSP всегда работает с дискретными: это результат дискретизации. Договорённость про скобки помогает не путать миры.
Периодические и апериодические
Сигнал периодический, если повторяется через интервал T: x[n] = x[n + N]. Синус, пила, меандр — периодические. Одиночный хлопок, речь, шум — апериодические. Период определяет, как сигнал раскладывается на частоты.
import math
# Меандр (прямоугольный сигнал) с периодом 8 отсчётов
N = 8
square = [1 if (n % N) < N // 2 else -1 for n in range(16)]
print("Меандр:", square)
print("Период повторяется:", square[:N] == square[N:2*N])
Вывод:
Меандр: [1, 1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, -1, -1, -1] Период повторяется: True
Детерминированные и случайные
Детерминированный сигнал задан формулой: зная n, точно знаем x[n] (синус). Случайный сигнал предсказать нельзя, его описывают вероятностно: средним, дисперсией, спектром мощности. Тепловой шум, помехи — случайные. На практике реальный сигнал = детерминированная часть (полезное) + случайная (шум).
import random, statistics
random.seed(1)
noise = [round(random.gauss(0, 1), 2) for _ in range(8)]
print("Шум:", noise)
print("Среднее:", round(statistics.mean(noise), 2))
print("СКО:", round(statistics.pstdev(noise), 2))
Вывод:
Шум: [1.29, 1.45, 0.07, -0.76, -1.09, 0.03, -1.02, -1.44] Среднее: -0.18 СКО: 1.02
Чётные и нечётные
Сигнал чётный, если x[-n] = x[n] (симметричен относительно нуля, как косинус). Нечётный, если x[-n] = -x[n] (как синус). Любой сигнал раскладывается в сумму чётной и нечётной частей — это важно для понимания фазового спектра.
Энергия и мощность
Чтобы сравнивать «силу» сигналов, вводят две меры. Энергия — сумма квадратов отсчётов: E = sum(x[n]**2). Подходит для коротких сигналов (импульсов). Мощность — средняя энергия на отсчёт: P = E / N. Подходит для бесконечных и периодических сигналов, у которых энергия бесконечна, а мощность конечна.
x = [3, -4, 0, 5]
energy = sum(v * v for v in x)
power = energy / len(x)
print("Энергия:", energy)
print("Мощность:", power)
print("СКЗ (RMS):", round(power ** 0.5, 3))
Вывод:
Энергия: 50 Мощность: 12.5 СКЗ (RMS): 3.536
Величина RMS (root mean square, среднеквадратичное значение) — корень из мощности; именно её показывает вольтметр переменного тока и от неё считают отношение сигнал/шум.
Как работает под капотом
Эти классы — не формальность, а подсказки алгоритму. Периодичность позволяет применить ряд Фурье и точно найти гармоники. Случайность означает, что бессмысленно искать точную формулу — работаем со статистикой и усреднением. Симметрия (чётность) экономит вычисления: у чётного сигнала спектр вещественный, у нечётного — чисто мнимый, что вдвое сокращает работу в некоторых алгоритмах. Деление энергия/мощность определяет, какой нормировкой пользоваться при сравнении сигналов разной длины.
Частые ошибки
- Путать
x(t)иx[n]. Круглые скобки — непрерывное время, квадратные — номер отсчёта. В коде всегда индекс. - Считать энергию у бесконечного сигнала. У периодического сигнала энергия бесконечна — для него считают мощность.
- Описывать шум средним значением. У шума с нулевым средним важна дисперсия (СКО), а не среднее, которое около нуля.
Итог
- Сигналы делят по осям: непрерывный/дискретный, периодический/апериодический, детерминированный/случайный, чётный/нечётный.
- Дискретный сигнал обозначают
x[n], аргумент — целый номер отсчёта. - Энергия = сумма квадратов; мощность = энергия на отсчёт; RMS = корень из мощности.
- Тип сигнала подсказывает метод обработки: Фурье для периодики, статистика для шума.