Модуляция и демодуляция с использованием комплексной огибающей

В этом примере моделируются различные шаги базового процесса связи. Системы связи работают путем модулирования фрагментов информации на более высокую несущую частоту, передачи модулированных сигналов через шумный физический канал, приема шумных форм волны и демодуляции принятых сигналов для восстановления исходной информации.

Вся информация, передаваемая в реальном сигнале s(t) может быть представлена соответствующей lowpass комплексной огибающей:

s(t)=Re{g(t)ej2πfct}=i(t)cos2πfct+q(t)sin2πfct.

В этом уравнении:

  • fc - несущая частота.

  • Re представляет действительную часть комплексного количества.

  • g(t)=i(t)+jq(t)- комплексная огибающая s(t).

  • i(t) является инфазным компонентом комплексной огибающей.

  • q(t) - квадратурный компонент комплексной огибающей.

Комплексная огибающая модулируется до несущей частоты и передается через канал. В приемнике шумная форма волны демодулируется с использованием несущей частоты.

Изменение фазы из-за несущей частоты предсказуемо и, таким образом, не передает никакой информации. Комплексная огибающая не включает изменение фазы и может быть дискретизирована с меньшей скоростью.

Сгенерируйте сигнал, комплексная огибающая которого состоит из синусоиды и щебета. Инфазный компонент является синусоидой с частотой 19 Гц. Квадратурный компонент является квадратичным щебетом, частота которого колеблется от 61 Гц до 603 Гц. Дискретизация сигнала производится на частоте 2 кГц в течение 1 секунды.

fs = 2e3;
t = (0:1/fs:1-1/fs)';
inph = sin(2*pi*19*t);
quad = chirp(t-0.6,61,t(end),603,'quadratic');

Вычислите сложную огибающую и сохраните ее как расписание скорости дискретизации MATLAB ® fs.

env = inph + 1j*quad;
g = timetable(env,'SampleRate',fs);

Откройте Signal Analyzer и перетащите сложную огибающую из браузера Рабочей области в таблицу Сигнал. На отображении показаны инфазные и квадратурные компоненты огибающей как линии одинакового оттенка и насыщения, но различной светимости. Первый цвет линии представляет инфазионный компонент, а второй цвет представляет квадратурный компонент. Нажмите спектр ▼ на вкладке Display и выберите Spectrum. Приложение отображает набор осей со спектром сигнала. Комплексная огибающая имеет двусторонний спектр, отображаемый как линия того же цвета инфазного компонента комплексной огибающей.

На вкладке Отображение (Display) нажмите кнопку Панорама (Panner), чтобы активировать панораму. Используйте панорамирование для создания окна масштаба от 300 мс до 720 мс. Перетащите окно масштаба так, чтобы оно находилось в центре 0 Гц. Спектр имеет импульс 0,19 кГц и более широкий профиль конусности на более высоких частотах. Область отрицательной частоты спектра является зеркальным изображением области положительной частоты.

Модулируйте сигнал с использованием несущей частоты 200 Гц. Умножьте на 2 так, чтобы степень модулированного сигнала равнялась степени исходного сигнала. Добавьте белый Гауссов шум таким образом, чтобы отношение сигнал/шум составляло 40 дБ.

fc = 200;
mod = sqrt(2)*real(env.*exp(2j*pi*fc*t));

SNR = 40;
mod = mod + randn(size(mod))*std(mod)/db2mag(SNR);
s = timetable(mod,'SampleRate',fs);

Щелкните Отобразить сетку (Display Grid ▼), чтобы добавить второе отображение. Перетащите модулированный сигнал в таблицу Signal и введите информацию о времени. Модуляция переместила спектр на положительные частоты с центром на несущей частоте.

Вычислите аналитический сигнал и демодулируйте сигнал путем умножения аналитического сигнала с комплексной отрицательной экспоненцией частоты 200 Гц.

dem = hilbert(mod).*exp(-2j*pi*fc*t)/sqrt(2);

Щелкните Отобразить сетку (Display Grid ▼), чтобы создать сетку отображения три на один. Перетащите демодулированный сигнал в таблицу Signal. Добавьте информацию о времени к комплексной огибающей, нажав Time Values на вкладке Analyzer. Двусторонний спектр показывает восстановленные синфазные и квадратурные компоненты сигнала сгенерированного модулированного сигнала.

Нажмите Display Grid ▼, чтобы создать единую сетку отображений и построить график демодулированного сигнала. Нажмите Data Cursors ▼ и выберите Two. Поместите курсоры во временной области на уровне 300 мс и 900 мс, поэтому они заключают спектральный peaks. Нажмите Extract Signals ▼ и выберите Between Time Cursors. Установите флажок «Сохранить начальное время». Очистите отображение и постройте график извлеченного сигнала. Приложение извлекает как инфазные, так и квадратурные компоненты демодулированного сигнала в необходимую область. Выберите извлеченный сигнал, щелкнув его столбец Name в таблице Signal. На вкладке Analyzer нажмите экспорт и сохраните сигнал в MAT-файл под названием dem_ROI.mat.

Загрузите dem_ROI файл в рабочую область. Вычислите демодулированные inphase и квадратурные компоненты, взяв действительную и мнимую части извлеченного сигнала. Сохраните информацию о времени извлеченного сигнала в переменной времени t_dem.

load dem_ROI
inph_dem = real(dem_ROI);
quad_dem = imag(dem_ROI);
t_dem = 0.3+(0:length(dem_ROI)-1)/fs;

Сравните переданные формы волны и извлеченные необходимые области. Также сравните их спектры.

subplot(2,1,1)
plot(t,inph,t_dem,inph_dem,'--')
legend('Transmitted Inphase Signal','Received Inphase Signal')

subplot(2,1,2)
plot(t,quad,t_dem,quad_dem,'--')
legend('Transmitted Quadrature Signal','Received Quadrature Signal')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Transmitted Inphase Signal, Received Inphase Signal. Axes 2 contains 2 objects of type line. These objects represent Transmitted Quadrature Signal, Received Quadrature Signal.

figure
subplot(2,1,1)
pspectrum(inph,fs)
hold on
pspectrum(inph_dem,fs)
legend('Transmitted Inphase Signal','Received Inphase Signal')
hold off

subplot(2,1,2)
pspectrum(quad,fs)
hold on
pspectrum(quad_dem,fs)
legend('Transmitted Quadrature Signal','Received Quadrature Signal')
hold off

Figure contains 2 axes. Axes 1 with title Fres = 4.2779 Hz contains 2 objects of type line. These objects represent Transmitted Inphase Signal, Received Inphase Signal. Axes 2 with title Fres = 4.2779 Hz contains 2 objects of type line. These objects represent Transmitted Quadrature Signal, Received Quadrature Signal.

См. также

Приложения

Функции

Похожие примеры

Подробнее о