Лабораторная работа 1.8
Спектральное представление сигналов. Разложение по гармоническим функциям. Дискретные преобразования.
Дисциплина: Основы теории сигналов и систем
Раздел: 1 — Временное и частотное представление сигналов
Компетенция: ПК-2.5-В1
Время: 8 часов
Ресурс: Э3 (электронный ресурс 3 из РПД)
Цели лабораторной работы
- Освоить спектральный анализ сигналов методами ДПФ/БПФ в MATLAB
- Наблюдать разложение сигнала по гармоническим функциям (ряд Фурье)
- Понять влияние оконных функций на качество спектрального анализа
- Сравнить ДПФ, непрерывное ПФ и ряд Фурье на практических примерах
Необходимое программное обеспечение
- MATLAB R2020b или новее
- Toolbox: Signal Processing Toolbox (для
spectrogram,pwelch)
Теоретические основы
1.1 Ряд Фурье для периодического сигнала
Любой периодический сигнал x(t) с периодом T раскладывается в ряд Фурье:
x(t) = a₀/2 + ∑ [aₙ·cos(n·ω₀·t) + bₙ·sin(n·ω₀·t)] (сумма от n=1 до ∞)
где ω₀ = 2π/T — основная частота, коэффициенты:
aₙ = (2/T) · ∫ x(t)·cos(n·ω₀·t) dt (от 0 до T) bₙ = (2/T) · ∫ x(t)·sin(n·ω₀·t) dt (от 0 до T)
1.2 Дискретное преобразование Фурье (ДПФ)
X[k] = ∑ x[n] · e^(-j·2π·k·n / N) (для n от 0 до N-1)
Обратное ДПФ:
x[n] = (1/N) · ∑ X[k] · e^(j·2π·k·n / N) (для k от 0 до N-1)
1.3 Оконные функции
Для уменьшения утечки спектра применяются оконные функции:
- Прямоугольное окно (без обработки) — максимальное разрешение, сильная утечка
- Окно Ханна:
w(n) = 0.5(1 - cos(2πn/(N-1))) - Окно Хэмминга:
w(n) = 0.54 - 0.46cos(2πn/(N-1)) - Окно Блэкмана: наилучшее подавление утечки, худшее разрешение
Задание
Раздел 1: Разложение в ряд Фурье (2 ч)
Задание 1.1: Синтез прямоугольного сигнала
- Задать прямоугольный сигнал через ряд Фурье с N = 1, 3, 7, 15, 31 гармониками
- Построить приближение на одном графике — наблюдать явление Гиббса
- Вычислить среднеквадратичную погрешность для каждого N
Формула: для прямоугольного сигнала амплитудой A и периодом T: x_N(t) = (4A / π) · ∑ (1/k) · sin(2π·k·t / T) (для k=1, 3, 5… N)
Выходные переменные: x_fourier_N (матрица 5×length(t)), rmse_fourier (вектор 5×1)
Задание 1.2: Спектр прямоугольного и треугольного сигналов
- Сгенерировать прямоугольный (
square()) и треугольный (sawtooth(., 0.5)) сигналы - Вычислить ДПФ обоих через
fft() - Построить двусторонние амплитудные спектры (ось: Гц)
- Сравнить скорость убывания гармоник (1/n vs 1/n²)
Раздел 2: Оконный анализ и утечка спектра (2 ч)
Задание 2.1: Демонстрация утечки
- Сгенерировать синус с частотой, не кратной частоте дискретизации/N
- Применить 4 оконные функции через
rectwin,hann,hamming,blackman - Для каждого окна построить АЧХ в логарифмическом масштабе
- Таблица сравнения: максимальная утечка (дБ), ширина главного лепестка
Выходные переменные: spectra_windows (матрица 4×N/2)
Задание 2.2: Оценка мощностного спектра (Welch)
- Сгенерировать зашумлённый сигнал с двумя компонентами
- Оценить спектр через
pwelch()с перекрытием 50% - Сравнить с обычным FFT — показать сглаживание
Раздел 3: ДПФ и ОДПФ (2 ч)
Задание 3.1: Восстановление сигнала через ОДПФ
- Взять произвольный сигнал
x[n], вычислитьX = fft(x) - Зануление части спектра (полосовая фильтрация в частотной области)
- Восстановить через
ifft(), сравнить с оригиналом
Выходные переменные: x_restored (вектор), snr_db (число)
Задание 3.2: Спектрограмма
- Сгенерировать частотно-модулированный чирп сигнал (
chirp()) - Построить спектрограмму через
spectrogram() - Объяснить в отчёте: что показывает спектрограмма и как выбрать параметры окна
Раздел 4: Итоговое задание — Анализ реального сигнала АСУТП (2 ч)
Сценарий: датчик температуры регистрирует сигнал с помехами. Необходимо:
- Загрузить данные из файла
sensor_data.mat(генерируется функциейlab1_8_generate_data.m) - Построить временной сигнал и оценить визуально частотный состав
- Применить Welch PSD для нахождения доминирующих частот помех
- Спроектировать и применить цифровой полосовой режекторный фильтр (
butter) - Сравнить сигнал до и после фильтрации
- Написать вывод (3-5 предложений): какие частоты были помехой, как фильтр улучшил сигнал
Выходные переменные для проверки: freq_noise (вектор найденных частот помех), snr_before, snr_after
Требования к отчёту
Отчёт сдаётся в виде .m скрипта (или .mlx Live Script) содержащего:
- Код всех заданий
- Графики (вставленные в mlx или сохранённые как .png)
- Развёрнутые комментарии к каждому шагу
- Выводы по каждому разделу
Система оценивания
| Раздел | Максимум |
|---|---|
| 1: Ряд Фурье (1.1 + 1.2) | 25 |
| 2: Оконный анализ (2.1 + 2.2) | 25 |
| 3: ДПФ/ОДПФ и спектрограмма | 25 |
| 4: Итоговое задание АСУТП | 25 |
| ИТОГО | 100 |
Перевод: 86–100 → отлично, 71–85 → хорошо, 55–70 → удовл.
Вспомогательные файлы
lab1_8_template.m— шаблон для заполненияlab1_8_generate_data.m— генерация тестового сигнала датчикаlab1_8_validator.m— автоматическая проверка ключевых переменных