Лабораторная 2.1 — Частотная ось дискретизации и интерпретация¶
Цель¶
Понять, как одна и та же запись может выглядеть правдоподобно на FFT-графике, но приводить к неверному выводу, если неправильно интерпретировать Fs.
Что выполняется¶
В работе студент:
- строит временной preview комплексного сигнала;
- рассчитывает FFT с корректной и намеренно неправильной частотной осью;
- сравнивает measured peak для правильного и ошибочного
Fs; - фиксирует frequency error и проверяет влияние DC offset и шума.
Результат¶
После выполнения работы должны быть получены:
- график временной формы I/Q;
- сравнение корректной и ошибочной FFT-оси;
- metrics JSON с expected tone и двумя вариантами интерпретации;
- инженерный вывод о критичности metadata
Fs.
Что приложить к отчёту¶
- значение
Fs, длину FFT и expected tone; - график
lab21_sampling_time_domain.png; - график
lab21_sampling_frequency_axis.png; - measured peak для correct/wrong interpretation;
- краткий вывод о том, почему визуально похожий спектр не гарантирует правильный инженерный смысл.
Подробная техническая часть¶
Почему это важно¶
Спектр имеет смысл только вместе с правильным Fs. Если Fs указан неверно, каждый бин FFT отображается на неверную физическую частоту, даже когда форма графика по-прежнему выглядит правдоподобно.
Эксперимент¶
Скрипт генерирует комплексный тон со следующими параметрами:
- корректная частота дискретизации
Fs = 1,0 МГц; - намеренно неверная интерпретация
Fs = 0,8 МГц; - ненулевое смещение DC;
- аддитивный шум;
- известный ожидаемый тон около
123,456 кГц.
Работа сравнивает:
- временной предпросмотр I/Q;
- модуль FFT с корректной частотной осью;
- тот же модуль FFT с неверной частотной осью;
- измеренную ошибку частоты пика для обеих интерпретаций.
Запуск¶
Из корня репозитория:
python blocks/block_02_signals_and_sampling/python/sampling_analysis.py
Или запустите представительный набор лабораторных:
python tools/run_all_labs.py
Ожидаемые артефакты¶
| Артефакт | Смысл |
|---|---|
docs/assets/lab21_sampling_time_domain.png |
предпросмотр I/Q во временной области |
docs/assets/lab21_sampling_frequency_axis.png |
верная и неверная интерпретация Fs на оси FFT |
docs/assets/lab21_sampling_metrics.json |
ожидаемый тон, измеренные пики и ошибки интерпретации |
Проверки интерпретации¶
- Верная интерпретация должна помещать тон рядом с ожидаемыми
123,456 кГц. - Неверная интерпретация должна заметно сдвигать измеренный пик, хотя форма спектра по-прежнему выглядит разумной.
- JSON с метриками должен показывать малую ошибку для верной оси и намного большую для неверной.
- Временной предпросмотр также помогает выявить смещение DC и риск ограничения до перехода к выводам в частотной области.
Чего ожидать¶
Expected tone: 123456.000 Hz
Measured peak with correct Fs: 123474.121 Hz
Measured peak with wrong Fs: 98779.297 Hz
Correct interpretation error: 18.121 Hz
Wrong interpretation error: -24676.703 Hz
- «Ошибка» 18 Гц при верной Fs, не ошибка. Это квантование по бинам FFT: пик читается в ближайшем центре бина. При 16 384 отсчётах и 1 МС/с бины отстоят на 61 Гц, поэтому ошибка остаётся меньше половины бина.
- При неверной Fs каждая частота масштабируется в 0,8 раза: 123 474 × 0,8 = 98 779 Гц. Форма спектра идентична: именно поэтому ошибку легко пропустить.
- Ошибка частоты дискретизации на 20 % дала частотную ошибку 24,7 кГц. Поэтому поле метаданных
Fsтак же важно, как сами отсчёты.
Упражнения¶
- Тот же файл по ошибке прочитан с Fs = 1,2 МГц. Предскажите сообщаемую частоту тона до запуска.
- Сколько отсчётов нужно, чтобы ошибка квантования по бинам была меньше 1 Гц при 1 МС/с?
- Известно, что тон на 200,0 кГц, а анализ сообщает 160,0 кГц. Какую частоту дискретизации принял анализ, если истинная: 1 МС/с?
Ответы (проверены запуском скрипта лабораторной)
- Все частоты масштабируются на
1,2 / 1,0:123 474,1 × 1,2 ≈ 148 169 Гц, ошибка около +24,7 кГц. - Пик читается в ближайшем бине, поэтому ошибка не больше половины бина,
Fs / (2N). Чтобы получить меньше 1 Гц при 1 MS/s, нужноN > 500 000; ближайшая степень двойки:N = 524 288(бин 1,9 Гц). Интерполяция между бинами даёт то же на гораздо меньшем числе отсчётов. - Найденная частота масштабируется вместе с принятой частотой дискретизации:
160 / 200 × 1 MS/s = 0,8 MS/sэто та же ошибка, что в этой лабораторной.
Чек-лист отчёта (расширенный)¶
- Записаны принятые
Fs, размер FFT и частота тона. - Объяснено, почему один и тот же модуль FFT может подтверждать и верный, и неверный вывод.
- Приложены временной предпросмотр и график сравнения частотной оси.
- Приведены ошибки частоты для верной и неверной интерпретации из JSON с метриками.
- Указано, какое поле метаданных необходимо защищать в реальном процессе записи IQ.