Перейти к содержанию

Лабораторная 2.3 — Интерпретация I/Q и mirrored spectrum

Цель

Понять разницу между корректной complex I/Q-записью, перестановкой каналов I/Q и real-valued захватом, который даёт зеркальный спектр.

Что выполняется

В работе студент:

  1. формирует комплексный тон в baseband;
  2. сравнивает correct complex IQ, swapped I/Q и real-only capture;
  3. измеряет peak positions для положительной и отрицательной частей спектра;
  4. проверяет, как потеря порядка 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. В самих отсчётах нет указания, какой вариант верен, поэтому это нужно записывать в метаданные и проверять известным тоном.

Упражнения

  1. Вместо перестановки I и Q возьмите сопряжение верного сигнала (np.conj(x)). Сравните пик со случаем перестановки. Почему они равны?
  2. Вы записываете известную FM-станцию, которая должна быть на +300 кГц, а она появляется на −300 кГц. Назовите две возможные причины и один эксперимент, различающий их.
  3. Почему вещественному захвату нужна вдвое большая частота дискретизации, чем комплексному, чтобы покрыть ту же полосу?
Ответы (проверены запуском скрипта лабораторной)
  1. Перестановка I и Q даёт Q + jI = j·conj(x): сопряжение, умноженное на постоянную фазу. Амплитудный спектр тот же, поэтому оба варианта переносят тон на −f с тем же уровнем.
  2. Либо где-то в записи или в программе чтения перепутан порядок I/Q или знак Q, либо спектр инвертирует радиотракт (ступень смешения с гетеродином выше сигнала). Чтобы различить, откройте ту же запись другой программой (HDSDR, SDR++): если она показывает +300 кГц, виновата ваша программа чтения; если все показывают −300 кГц, инверсия произошла до записи файла.
  3. Спектр вещественного сигнала симметричен, X(−f) = X*(f), поэтому отсчёты однозначно несут только полосу от 0 до Fs/2; комплексный сигнал несёт от −Fs/2 до +Fs/2. Объём данных одинаков: в комплексном потоке два вещественных числа на отсчёт.

Чек-лист отчёта (расширенный)

  • Объяснено, почему комплексная основная полоса различает направление в спектре.
  • Приложены график I/Q во времени и график сравнения спектров.
  • Приведены положения пиков для верного, переставленного и зеркального случаев.
  • Объяснено, какая ошибка при захвате или разборе на практике приводит к перестановке I/Q.
  • Указано, как та же проблема проявилась бы в реальном процессе записи SDR.