Задание 5: Дискретизация. Теорема Котельникова. Алиасинг.
Раздел: 1. Временное и частотное представление сигналов
Тема: 2.3 Теорема Котельникова-Шеннона
Тип: MATLAB Script
Срок выполнения: 2 ч СРС
Максимальный балл: 2.5
Цель работы
Экспериментально подтвердить теорему Котельникова (Найквиста-Шеннона) о дискретизации. Наблюдать алиасинг при нарушении условия дискретизации и количественно оценить качество восстановления через SNR.
Теоретическая справка
Теорема Котельникова (Найквиста-Шеннона):
Для точного восстановления сигнала с максимальной частотой f_max достаточно дискретизировать его с частотой:
\[f_s \geq 2 \cdot f_{max}\]
Алиасинг возникает при f_s < 2·f_max: высокочастотные составляющие «отражаются» и появляются на ложных (alias) частотах:
\[f_{alias} = |f - n \cdot f_s|_{min}\]
Пример: f = 100 Гц, f_s = 120 Гц → f_alias = 100 − 120 = 20 Гц (вместо 100 Гц слышим 20 Гц!)
SNR (отношение сигнал/шум) характеризует качество восстановления:
\[\text{SNR} = 10 \cdot \lg\left(\frac{P_{signal}}{P_{error}}\right), \quad \text{дБ}\]Задание
Параметры (не изменять!)
Аналоговый сигнал: x(t) = sin(2π·80·t) + 0.5·sin(2π·100·t)
fmax = 100 Гц (максимальная частота в сигнале)
fs_cont = 100000 Гц (эмулирует «аналог»)
Три частоты дискретизации
| Переменная | fs, Гц | Условие | Ожидаемый SNR |
|---|---|---|---|
snr_fs1 | 250 | ✅ Выполнена (250 > 200) | > 20 дБ |
snr_fs2 | 120 | ❌ Нарушена (120 < 200) | « snr_fs1 |
snr_fs3 | 500 | ✅ Перекрытие (500 » 200) | > 20 дБ |
Что нужно сделать
- Дискретизировать сигнал при каждой fs (взять каждый
step = round(fs_cont/fs)отсчёт) - Восстановить через
interp1(..., 'spline') - Вычислить SNR для каждого случая
- Найти
f_alias— alias-частоту при fs2 = 120 Гц для f = 100 Гц
Файлы задания
| Файл | Назначение |
|---|---|
task05_template.m | Шаблон — заполнить ??? |
task05_grader.m | Автопроверка |
Ожидаемые результаты
| Переменная | Ожидание | ||
|---|---|---|---|
snr_fs1 | > 20 дБ | ||
snr_fs2 | < snr_fs1 − 10 дБ | ||
snr_fs3 | > 20 дБ | ||
f_alias | 20 Гц ( | 100 − 120 | = 20) |
Контрольные вопросы
- Почему не достаточно дискретизировать с частотой ровно 2·f_max? Что происходит «на границе»?
- Как антиалиасинговый фильтр (ФНЧ) помогает предотвратить алиасинг?
- В вашем примере при fs=120 Гц: составляющая 80 Гц тоже даст alias. Вычислите эту частоту.
Критерии оценки
| Балл | Критерий |
|---|---|
| 2.0 | snr_fs1, snr_fs2, f_alias верны, grader ≥ 9/10 |
| 1.5 | 2 из 4 переменных верны |
| 1.0 | Хотя бы snr_fs1 или f_alias правильные |
| +0.5 | Аннотированные выводы: почему возникает алиасинг |