Лабораторная 2.3 — Интерпретация I/Q и mirrored spectrum¶
Цель¶
Понять разницу между корректной complex I/Q-записью, перестановкой каналов I/Q и real-valued захватом, который даёт зеркальный спектр.
Что выполняется¶
В работе студент:
- формирует комплексный тон в baseband;
- сравнивает correct complex IQ, swapped I/Q и real-only capture;
- измеряет peak positions для положительной и отрицательной частей спектра;
- проверяет, как потеря порядка I/Q или imaginary channel меняет физический смысл спектра.
Результат¶
После выполнения работы должны быть получены:
- временной график компонентов I/Q;
- спектральное сравнение correct/swapped/real capture;
- metrics JSON с положением пиков и проверкой зеркальности;
- инженерный вывод о важности правильного порядка I/Q в SDR pipeline.
Что приложить к отчёту¶
- график
lab23_iq_components_time.png; - график
lab23_iq_interpretation_spectra.png; - measured peaks для correct, swapped и mirrored cases;
- краткое объяснение, почему complex baseband различает знак частоты;
- note о том, как ошибка перестановки I/Q проявится в реальной IQ-записи.
Подробная техническая часть¶
Почему это важно¶
Комплексная основная полоса разделяет положительные и отрицательные частоты. Если порядок I/Q неверен, спектр может оказаться зеркальным. Если используется только вещественный канал, содержимое на положительных и отрицательных частотах становится симметричным, и информация о направлении теряется.
Эксперимент¶
Скрипт строит комплексный тон на 120 кГц и сравнивает три случая:
- корректный комплексный I/Q;
- I/Q, переставленные обменом вещественной и мнимой частей;
- вещественный захват, сохраняющий только канал I.
Работа измеряет:
- положение пика для корректного комплексного сигнала;
- зеркальный пик для случая с переставленными I/Q;
- положительный и отрицательный зеркальные пики для вещественного захвата.
Запуск¶
Из корня репозитория:
python blocks/block_02_signals_and_sampling/python/iq_visualization.py
Или запустите представительный набор лабораторных:
python tools/run_all_labs.py
Ожидаемые артефакты¶
| Артефакт | Смысл |
|---|---|
docs/assets/lab23_iq_components_time.png |
компоненты I/Q во временной области |
docs/assets/lab23_iq_interpretation_spectra.png |
спектры для верного, переставленного и зеркального случаев |
docs/assets/lab23_iq_metrics.json |
положения пиков и проверки зеркальности |
Проверки интерпретации¶
- В случае корректного комплексного I/Q главный тон должен быть около
+120 кГц. - В случае переставленных I/Q тон должен зеркально отразиться на отрицательную сторону спектра.
- Вещественный захват должен показать одинаковые положительный и отрицательный пики около
+/-120 кГц. - JSON с метриками должен подтвердить малую ошибку для корректного случая и почти симметричные зеркальные пики для вещественного.
Чего ожидать¶
Correct peak: 119995.117 Hz
I/Q swapped peak: -119995.117 Hz
Real-valued positive/negative peaks: 119995.117/-119995.117 Hz
- Перестановка I и Q в точности зеркалит спектр: +120 кГц становятся −120 кГц. Обмен двух частей превращает
xвj * conj(x), а сопряжение меняет направление вращения. - Вещественный захват показывает и +120, и −120 кГц одинаковой высоты. Вещественный сигнал не различает два направления; поэтому SDR отдаёт два канала, I и Q.
- Зеркальный спектр: типичный симптом неверной настройки
i_firstили приёмника с противоположным соглашением о знаке LO. В самих отсчётах нет указания, какой вариант верен, поэтому это нужно записывать в метаданные и проверять известным тоном.
Упражнения¶
- Вместо перестановки I и Q возьмите сопряжение верного сигнала (
np.conj(x)). Сравните пик со случаем перестановки. Почему они равны? - Вы записываете известную FM-станцию, которая должна быть на +300 кГц, а она появляется на −300 кГц. Назовите две возможные причины и один эксперимент, различающий их.
- Почему вещественному захвату нужна вдвое большая частота дискретизации, чем комплексному, чтобы покрыть ту же полосу?
Ответы (проверены запуском скрипта лабораторной)
- Перестановка I и Q даёт
Q + jI = j·conj(x): сопряжение, умноженное на постоянную фазу. Амплитудный спектр тот же, поэтому оба варианта переносят тон на−fс тем же уровнем. - Либо где-то в записи или в программе чтения перепутан порядок I/Q или знак Q, либо спектр инвертирует радиотракт (ступень смешения с гетеродином выше сигнала). Чтобы различить, откройте ту же запись другой программой (HDSDR, SDR++): если она показывает +300 кГц, виновата ваша программа чтения; если все показывают −300 кГц, инверсия произошла до записи файла.
- Спектр вещественного сигнала симметричен,
X(−f) = X*(f), поэтому отсчёты однозначно несут только полосу от 0 доFs/2; комплексный сигнал несёт от −Fs/2до +Fs/2. Объём данных одинаков: в комплексном потоке два вещественных числа на отсчёт.
Чек-лист отчёта (расширенный)¶
- Объяснено, почему комплексная основная полоса различает направление в спектре.
- Приложены график I/Q во времени и график сравнения спектров.
- Приведены положения пиков для верного, переставленного и зеркального случаев.
- Объяснено, какая ошибка при захвате или разборе на практике приводит к перестановке I/Q.
- Указано, как та же проблема проявилась бы в реальном процессе записи SDR.