Виды сигналов

Раскладываем сигналы по полочкам: эта классификация подсказывает, какой инструмент 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 = корень из мощности.
  • Тип сигнала подсказывает метод обработки: Фурье для периодики, статистика для шума.
Проверьте себя
1. Как принято обозначать дискретный сигнал?
Ax(t) с круглыми скобками
Bx[n] с квадратными скобками и целым n
CX(f)
Dx = t
2. Для какого сигнала корректно считать мощность, а не энергию?
AДля одиночного короткого импульса
BДля бесконечного периодического синуса
CДля любого сигнала из 4 отсчётов
DЭнергия и мощность — это одно и то же
3. Чему равна энергия сигнала [3, -4, 0, 5]?
A12
B50
C8
D25
4. Чем описывают случайный сигнал (шум)?
AТочной формулой x[n]
BСтатистикой: средним, дисперсией, спектром мощности
CТолько периодом
DЕго описать нельзя