Передача цифрового диапазона частот - двоичная цифровая модуляция и моделирование MATLAB
Передача цифрового диапазона частот - двоичная цифровая модуляция и моделирование MATLAB

Предисловие

Сигналы цифрового диапазона также часто называют сигналами цифровой модуляции.,его сигнал Спектр Обычно полосовой тип,Подходит для передачи в полосовых каналах。Цифровая модуляция — это метод обработки сигналов, который преобразует цифровые сигналы основной полосы частот в подходящую передачу по полосовому каналу.,как в аналоговой связи,Может адаптироваться к характеристикам канала путем перемещения группового сигнала.,Той же цели можно достичь, используя частотную и фазовую модуляцию.

В этой статье Matlab в основном будет использоваться для изучения методов двоичной модуляции и демодуляции, включая OOK, 2PSK и 2FSK, а также для анализа и моделирования этих систем модуляции.


1. ОК

1. Выражение

Если двоичный символ «0» соответствует сигналу 0, а «1» соответствует сигналу

Acos2\pi f_ct

, то сигнал OOK можно записать в виде следующего выражения:

s(t)={\sum_na_ng(t-nT_s)}Acos2\pi f_ct

в,

a_n\in

{0,1},

g(t)=\begin{cases} 1& 0\le t \le T_s \\ 0& \text{Другие} \end{cases}

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

m(t)=\sum_na_ng(t-nT_s)

Форма сигнала OOK, сформированного после модуляции DSB, показана на рисунке ниже:

Форма сигнала ОК

2. Спектральная плотность мощности

Спектральная плотность мощности сигнала OOK равна:

P_s(f)=\frac{A^2}{4}[P_m(f-f_c)+P_m(f+f_c)]

3. Блок-схема модуляции

Блок-схема модуляции OOK показана ниже:

Блок-схема модуляции сигнала OOK

2.2ПСК

1. Выражение

Соответствующая фаза двоичного символа «0» равна

\pi

перевозчик

-Acos2\pi f_ct

,“1” Соответствующая фаза 0перевозчик

Acos2 \pi f_ct

, то сигнал 2PSK можно записать в виде следующего выражения:

s(t)={\sum_na_ng(t-nT_s)}Acos2\pi f_ct

в,

a_n\in

{+1,-1},

g(t)=\begin{cases} 1& 0\le t \le T_s \\ 0& \text{Другие} \end{cases}

Форма сигнала 2PSK показана на рисунке ниже. Блок-схема его реализации аналогична OOK, за исключением того, что вход является биполярным.

Форма сигнала 2PSK

2. Спектральная плотность мощности

Спектральная плотность мощности сигнала 2PSK равна:

P_s(f)=\frac{A^2}{4}[P_m(f-f_c)+P_m(f+f_c)]

3. 2ФСК

1. Выражение

Соответствует двоичному символу «0» несущей.

Acos2 \pi f_1t

, «1» соответствует оператору связи

Acos2\pi f_2t

, то формируется сигнал 2FSK, который можно записать в виде следующего выражения:

s(t)=\sum_n \overline{a_n}g(t-nT_s)Acos(2\pi f_1t+\varphi_n)+\sum_n a_ng(t-nT_s)Acos(2\pi f_1t+\theta_n)

когда

a_n=1

Когда , соответствующая частота сигнала передачи равна

f_2

,когда

a_n=0

Когда , соответствующая частота сигнала передачи равна

f_1

, в приведенной выше формуле

\varphi_n

\theta_n

являются начальными фазами двух частотных волн. 2FSK можно записать и в другой форме:

s(t)=Acos[2\pi f_ct+2\pi h\sum_{n=-\infty}^{\infty}{a_n}g(t-nT_s)]

в,

a_n\in

{+1,-1},

f_c=(f_1+f_2)/2

,

g(t)=\begin{cases} 1& 0\le t \le T_s \\ 0& \text{Другие} \end{cases}

,

h=|f_c-f_1|

— это смещение частоты, и его форма сигнала показана на рисунке ниже:

Форма сигнала 2FSK

Сигнал 2FSK можно рассматривать как суперпозицию сигналов OOK двух разных несущих:

s(t)=s_1(t)cos(\omega t+\phi_1)+s_2(t)cos(\omega_t+\phi_2)

Когда эти два элемента некоррелированы (например, разница частот между несущими достаточно велика), его спектральная плотность мощности равна:

P_s=\frac{1}{4}[P_{s1}(f+f_1)+P_{s1}(f-f_1)]+\frac{1}{4}[P_{s2}(f+f_1)+P_{s1}(f-f_2)]

4. Моделирование MATLAB

Следующий код использует MATLAB для генерации независимых источников двоичной информации равной вероятности и выполняет следующие три функции:

  • Нарисуйте форму сигнала OOK и его спектр мощности;
  • Нарисуйте форму сигнала 2PSK и его спектр мощности;
  • Нарисуйте форму сигнала 2FSK и его спектр мощности (при условии, что
|f_1-f_2|>>\frac{1}{T_s}

)。

1. Исходный код MATLAB

Язык кода:javascript
копировать
% 2ASK,2PSK
clear all;
close all;

A  = 1;
fc = 2;                                     % 2Hz;
N_sample = 8; 
N  = 500;                                   % Количество элементов кода
Ts = 1;                                     % 1 baud/s

dt = Ts/fc/N_sample;                        % форма интервал дискретизации волн
t = 0 : dt : N*Ts-dt;
T = dt * length(t);
Lt = length(t);

% Создать двойной источник
d = sign(randn(1, N));                      
dd = sigexpand((d+1)/2, fc*N_sample);
gt = ones(1, fc*N_sample);                   % NRZ форма волны

figure(1)
subplot(221);                               % входить NRZ форма сигнал (униполярный)
d_NRZ = conv(dd, gt);
plot(t, d_NRZ(1:length(t))); 
axis([0 10 0 1.2]); xlabel('t/s'); ylabel('входить Сигнал');

subplot(222);                               % входить NRZ Спектр
[f, d_NRZf] = T2F(t, d_NRZ(1:length(t)));
plot(f, 10*log10(abs(d_NRZf).^2/T));
axis([-2 2 -50 10]); xlabel('f/Hz'); ylabel('входить Сигнал Спектральная плотность мощности (д Б/Гц)');

Сигнал %2ASK
ht = A*cos(2*pi*fc*t);
s_2ask = d_NRZ(1:Lt).*ht;

subplot(223)
plot(t,s_2ask);
axis([0 10 -1.2 1.2]); xlabel('t/s'); ylabel('2ASK');

[f, s_2askf]=T2F(t, s_2ask );
subplot(224)
plot(f, 10*log10(abs(s_2askf).^2/T));
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('Спектральная плотность мощности 2ASK (д Б/Гц)');

figure(2)
%2PSK-сигнал
d_2psk = 2*d_NRZ-1;
s_2psk = d_2psk(1:Lt).*ht;
subplot(221)
plot(t,s_2psk);
axis([0 10 -1.2 1.2]); xlabel('t/s'); ylabel('2PSK');

subplot(222)
[f, s_2pskf] = T2F(t, s_2psk);
plot( f, 10*log10(abs(s_2pskf).^2/T) );
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('Спектральная плотность мощности 2PSK (д Б/Гц)');

% 2FSK
% s_2fsk = Acos(2*pi*fc*t + int(2*d_NRZ-1) );
 sd_2fsk = 2*d_NRZ-1;

s_2fsk = A*cos(2*pi*fc*t + 2*pi*sd_2fsk(1:length(t)).*t );
subplot(223)
plot(t, s_2fsk);
axis([0 10 -1.2 1.2]);xlabel('t/s'); ylabel('2FSK')
subplot(224)
[f, s_2fskf] = T2F(t, s_2fsk);
plot(f, 10*log10(abs(s_2fskf).^2/T));
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('Спектральная плотность мощности 2FSK (д Б/Гц)');

% случайная фаза 2FSK
fai = 2*pi*rand(1, N);
fai_2fsk = sigexpand(fai, fc*N_sample);
fai_2fsk = conv(fai_2fsk, gt);
s_2fskd = A*cos(2*pi*fc*t + 2*pi*sd_2fsk(1:length(t)).*t + fai_2fsk(1:length(t)) );
figure(3)
subplot(211);
plot(t, s_2fskd);
axis([0 10 -1.2 1.2]); xlabel('t/s'); ylabel('случайная фаза 2FSK');
[f, s_2fskdf] = T2F(t, s_2fskd);
subplot(212);
plot(f, 10*log10(abs(s_2fskdf).^2/T));
axis([-fc-4 fc+4 -50 10]); xlabel('f/Hz'); ylabel('случайная фаза 2FSK Спектральная плотность мощности (д Б/Гц)');

2. Моделирование и результаты

①.Входной сигнал и диаграмма спектра.
②, модуляция 2ASK
③, модуляция 2PSK
④, модуляция 2FSK
⑤ Случайная фазовая модуляция 2FSK.

5. Добывайте ресурсы самостоятельно

Двоичная цифровая модуляция и моделирование MATLAB

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose