Основы цифровой обработки сигналов
Случайные процессы и шумы
Шум как случайный процесс
Шум – это нежелательные явления, мешающие нам получать информацию из полезного сигнала. Шум случаен по своей природе.
Источники шума:
- Физика самого процесса, который мы изучаем;
- Неидеальности приемной аппартуры (датчиков);
- АЦП.
В качестве модели полезного сигнала удобно рассматривать детерминированный сигнал, описываемый аналитической функцией, например, гармоническое колебание:
Реальный сигнал отличается от его аналитического описания на случайную величину ошибки. Реальный сигнал можно рассматривать как сумму детерминированного сигнала и случайного процесса. Например, зависимость температуры воды в чайнике от времени:

Случайный процесс
Понятие случайного процесса тесно связано с понятием случайной функции.
Случайная функция – это функция, которая принимает в результате эксперимента заранее неизвестные значения.
Случайный процесс (СП) – это случайная функция времени.
Конкретный вид, который принимает СП в результате эксперимента, называется реализацией СП. Различные реализации СП всегда отличаются друг от друга.
Распределение случайной величины
В качестве удобной модели случайного процесса широко используется нормальное распредление (или распределение Гаусса). Его популярность вытекает из центральной предельной теоремы: сумма большого количества слабо зависимых случайных величин имеет распределение, близкое к нормальному.
Убедимся в этом в Engee. Создадим 5 векторов по 100 точек со случайными значениями. Функция rand позволяет генерировать вектора и матрицы со случайными значениями, равномерно распределенными в интервале от 0 до 1.
Построим эти векторы на графиках и убедимся, что во временной области они выглядят как реализации случайного процесса.
using Plots;
x1 = rand(100,1);
x2 = rand(100,1);
x3 = rand(100,1);
x4 = rand(100,1);
x5 = rand(100,1);
plot(x1, label="реализация шума № 1")
plot!(x2, label="реализация шума № 2")
plot!(x3, label="реализация шума № 3")
plot!(x4, label="реализация шума № 4")
plot!(x5, label="реализация шума № 5")
Затем найдем среднее арифметическое всех 5 векторов (s) и отобразим его на гистограмме. Мы видим, что распределение вектора s близко к нормальному, что подтверждает центральную предельную теорему.
s = (x1+x2+x3+x4+x5)/5;
histogram(s, legend=false)
Характеристики случайных процессов
- Математическое ожидание – среднее значение, вокруг которого колеблется СП;
- Дисперсия – величина, показывающая, насколько сильно могут отличаться значения СП от математического ожидания (мера разброса СП);
- Среднеквадратическое отклонение (стандартное отклонение) также является мерой разброса СП.
- Автокорреляционная функция (АКФ) – мера скорости изменения СП. Она описывает зависимость взаимосвязи сигнала с его сдвинутой во времени копией от величины временного сдвига. Чем быстрее изменяется сигнал, тем быстрее спадает его АКФ.
- Спектральная плотность мощности (СПМ) – распределение мощности сигнала в зависимости от частоты, т.е. мощность, приходящаяся на единичный интервал частоты.
СП называется стационарным, если его плотность вероятности не зависит от временного сечения, т.е. все его статистические характеристики не зависят от времени.
Стационарный процесс называется эргодическим, если для определения его характеристик вместо усреднения по ансамблю реализаций можно использовать усреднение по времени для одной реализации.
Белый шум
Белый шум – это стационарный СП, у которого спектральная плотность мощности распределена равномерно.
Пример спектральной плотности мощности белого шума приведен на рисунке.
Аддитивный белый гауссовский шум
В цифровой обработке сигналов чаще всего используется аддитивный белый гауссовский шум (АБГШ). Его характеристики:
- Равномерная спектральная плотность мощности (поэтому он называется белым);
- Нормальное распределение временных значений (поэтому он называется гауссовским);
- Он суммируется с полезным сигналом (поэтому он называется аддитивным);
- Он статистически независим от полезного сигнала.
АБГШ используется как модель канала передачи данных.
Одной из мер качества систем ЦОС и систем связи является отношение сигнал/шум (signal-to-noise ratio, SNR) – безразмерная величина, равная отношению мощности полезного сигнала к мощности шума:
где – мощность, – амплитуда.
SNR обычно измеряется в децибелах (дБ).
Одна из задач ЦОС – повышение отношения сигнал/шум. Рассмотрим один методов – усреднение (когерентное накопление). Он основан на том факте, что при усреднении сигналов амплитуда шума не растет.
Пример. Создадим в Engee синусоиду и добавим к ней аддитивный белый гауссовский шум с помощью функции addNoise, содержащейся в библиотеке DigitalComm. Функция прибавляет шум к сигналу sin_wave. Уровень шума рассчитывается в соответствии с заданной величиной отношения сигнал/шум (SNR). В данном примере SNR выбрано равным 10 дБ. Построим график синусоиды с шумом и без шума.
using Plots, DigitalComm, DSP;
fs = 1000;
t = [0:1/fs:1;];
sin_wave = cos.(2*pi*10*t);
signal = addNoise(sin_wave, 10);
plot(t, signal, xlabel="t", ylabel="y", label="синусоида с шумом")
plot!(t,sin_wave, label="синусоида без шума")
Функция periodogram, содержащаяся в библиотеке DSP, позволит оценить спектральную плотность мощности шума. Переменная signal представляет собой матрицу с 2 столбцами: в первом столбце содержится вектор отсчетов зашумленного сигнала, а во втором – вектор отсчетов шума. Поэтому в качестве аргумента функции periodogram мы возьмем второй столбец матрицы signal.
Из объекта p выделим вектор частот функцией freq и вектор спектральной плотности мощности функцией power. По графику мы видим, что распределение спектральной плотности мощности шума действительно равномерное. Следовательно, это белый шум.
p = DSP.periodogram(signal[2]);
plot(freq(p), power(p), xlabel="частота", ylabel="Спектральная плотность мощности", legend=false)
Теперь сгенерируем большое число зашумленных сигналов. Несмотря на то, что мы вызываем одну и ту же функцию addNoise, реализации шума в каждом из векторов будут отличаться. Если мы будем складывать эти векторы между собой, то их синусоидальные компоненты будут складываться в фазе, а шумовые компоненты будут складываться случайным образом. На графике убедимся в том, что амплитуда шума в результирующей сумме заметно ниже.
using Plots, DigitalComm;
t = [0:1/1000:1;];
sin_wave = cos.(2*pi*10*t);
signal = addNoise(sin_wave, 10);
plot(t,signal)
plot!(t,sin_wave)
signal1 = addNoise(sin_wave, 10);
signal2 = addNoise(sin_wave, 10);
signal3 = addNoise(sin_wave, 10);
signal4 = addNoise(sin_wave, 10);
signal5 = addNoise(sin_wave, 10);
signal6 = addNoise(sin_wave, 10);
signal7 = addNoise(sin_wave, 10);
signal8 = addNoise(sin_wave, 10);
signal9 = addNoise(sin_wave, 10);
signal10 = addNoise(sin_wave, 10);
signal_sum = (signal1.+signal2.+signal3.+signal4.+signal5.+signal6.+signal7.+signal8.+signal9.+signal10)./10;
plot(t, signal_sum[1], xlabel="t", ylabel="усредненный сигнал", label=false)
✏️Задание
Сгенерируйте в Engee синусоиду с частотой 200 Гц и добавьте к ней аддитивный белый гауссовский шум с дБ. Затем постройте спектр зашумленного сигнала с помощью функции periodogram. Обратите внимание на то, что переменная signal представляет собой матрицу с 2 столбцами: в первом столбце содержится вектор отсчетов зашумленного сигнала, а во втором – вектор отсчетов шума. Поэтому в качестве аргумента функции periodogram возьмите первый столбец матрицы signal.
Решение
using Plots, DigitalComm, DSP;
fs = 1000;
t = [0:1/fs:0.2;];
sin_wave = cos.(2*pi*200*t);
signal = addNoise(sin_wave, 3);
plot(t, signal[1], xlabel="t", ylabel="сигнал", label="синусоида с шумом")
plot!(t, sin_wave, label="синусоида без шума")
p = DSP.periodogram(signal[1]);
plot(freq(p), power(p), xlabel="частота", ylabel="спектральная плотность мощности", legend=false)