MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем
 

Обработка сигналов и изображений\Communications Toolbox

Список функций CommunicationsToolbox:  Модуляция и демодуляция

  В оглавление \ К следующему разделу \ К предыдущему разделу

ADEMOD
Аналоговая демодуляция (вещественный входной сигнал)

Синтаксис:

z = ademod(y,Fc,Fs,'amdsb-tc',offset,num,den);
z = ademod(y,Fc,Fs,'amdsb-tc/costas',offset,num,den);
z = ademod(y,Fc,Fs,'amdsb-sc',num,den);
z = ademod(y,Fc,Fs,'amdsb-sc/costas',num,den);
z = ademod(y,Fc,Fs,'amssb',num,den);
z = ademod(y,Fc,Fs,'qam',num,den);
z = ademod(y,Fc,Fs,'fm',num,den,vcoconst);
z = ademod(y,Fc,Fs,'pm',num,den,vcoconst);
z = ademod(y,Fc,[Fs phase],...);

Необязательные входные параметры:

Параметр Значение по умолчанию
offset Выбирается так, чтобы каждый выходной сигнал имел нулевое среднее значение
num, den [num,den] = butter(5,Fc*2/Fs);
vcoconst 1

Описание:

Функция ademod выполняет аналоговую демодуляцию, используя вещественный входной сигнал с заданной несущей частотой. Соответствующая функция модуляции — amod. В приведенной ниже таблице перечислены поддерживаемые функцией ademod виды модуляции.

Вид модуляции Четвертый входной параметр
Амплитудная демодуляция 'amdsb-tc' или 'amdsb-tc/costas'
Амплитудная демодуляция, две боковых полосы с подавленной несущей 'amdsb-sc' или 'amdsb-sc/costas'
Амплитудная демодуляция, одна боковая полоса с подавленной несущей 'amssb'
Квадратурная амплитудная демодуляция 'qam'
Частотная демодуляция 'fm'
Фазовая демодуляция 'pm'

Общая информация о синтаксисе:

При всех вариантах вызова функции z = ademod(y,Fc,Fs,...) в качестве принятого модулированного сигнала используется массив y. Параметр Fc — это несущая частота в герцах, а Fs — частота дискретизации в герцах. Начальная фаза несущего колебания равна нулю.

Параметры y и z — вещественные матрицы, размеры которых зависят от вида модуляции:

  • Квадратурная амплитудная модуляция. Если y — вектор размера n, то z будет матрицей, содержащей n строк и 2 столбца. Если y — матрица с n строками и m столбцами, то каждый столбец y обрабатывается независимо и результат z содержит n строк и 2m столбцов. Столбцы z с нечетными номерами представляют синфазные компоненты демодулированного сигнала, а столбцы с четными номерами — его квадратурные компоненты.
  • Другие виды модуляции. Массивы y и z имеют одинаковые размеры. Если y — двумерная матрица, то ее столбцы обрабатываются независимо друг от друга.

Можно задать частоту дискретизации в виде двухэлементного вектора:
z = ademod(y,Fc,[Fs phase],...).
В данном случае первый элемент этого вектора (Fs) задает частоту дискретизации, как описано выше. Второй элемент (phase) — это начальная фаза несущего колебания в радианах.

Функция ademod использует фильтр нижних частот для отделения демодулированного низкочастотного сигнала от побочных продуктов демодуляции, имеющих частоты, равные частоте несущего колебания или превышающие ее. Чтобы задать параметры фильтра, включите в список входных параметров векторы num и den. Параметры num и den должны быть векторами-строками, содержащими коэффициенты полиномов числителя и знаменателя функции передачи фильтра в порядке убывания степеней. Если параметр num является пустой матрицей, равен нулю или отсутствует, по умолчанию используется фильтр Баттерворта 5-го порядка с частотой среза, равной несущей частоте. Фильтр рассчитывается с помощью функции butter, входящей в пакет Signal Processing:

[num,den] = butter(5,Fc*2/Fs);

Конкретные варианты синтаксиса:

  • z = ademod(y,Fc,Fs,'amdsb-tc',offset,num,den)

Реализует амплитудную демодуляцию при наличии двух боковых полос. Параметр offset — это вектор, k-й элемент которого вычитается из k-го столбца матрицы демодулированных сигналов. Если offset — пустая матрица, то по умолчанию из каждого столбца z вычитается такая константа, чтобы среднее значение столбца стало нулевым (если z — вектор, то из него вычитается его среднее значение).

  • z = ademod(y,Fc,Fs,'amdsb-tc/costas',offset,num,den)

То же, что и предыдущий вариант синтаксиса, но для демодуляции используется алгоритм Костаса (алгоритм с фазовой автоподстройкой частоты (ФАПЧ)).

  • z = ademod(y,Fc,Fs,'amdsb-sc',num,den)

Реализует демодуляцию амплитудно-модулированного сигнала с двумя боковыми полосами и подавленной несущей.

  • z = ademod(y,Fc,Fs,'amdsb-sc/costas',num,den)

То же, что и предыдущий вариант синтаксиса, но для демодуляции используется алгоритм Костаса (алгоритм с ФАПЧ).

  • z = ademod(y,Fc,Fs,'amssb',num,den)

Реализует демодуляцию амплитудно-модулированного сигнала с одной боковой полосой и подавленной несущей.

  • z = ademod(y,Fc,Fs,'qam',num,den)

Реализует демодуляцию сигнала с квадратурной амплитудной модуляцией.

  • z = ademod(y,Fc,Fs,'fm',num,den,vcoconst)

Реализует частотную демодуляцию. Для демодуляции используется петля ФАПЧ, состоящая из перемножителя (используемого в качестве фазового детектора), фильтра нижних частот и генератора, управляемого напряжением (ГУН) (английский термин — voltage-controlled oscillator, VCO). Если Fs — двухэлементный вектор, то его второй элемент задает начальную фазу ГУН в радианах. Необязательный параметр vcoconst — число, задающее коэффициент преобразования ГУН в Гц/В.

  • z = ademod(y,Fc,Fs,'pm',num,den,vcoconst)

Реализует фазовую демодуляцию. Для демодуляции используется петля ФАПЧ (которая реализует частотный демодулятор), на выходе которой включен интегратор. Петля ФАПЧ состоит из перемножителя (используемого в качестве фазового детектора), фильтра нижних частот и ГУН. Если Fs — двухэлементный вектор, то его второй элемент задает начальную фазу ГУН в радианах. Необязательный параметр vcoconst — число, задающее коэффициент преобразования ГУН в Гц/В и коэффициент усиления интегратора.

Примеры.

Данный пример иллюстрирует использование параметра offset. Поскольку первая команда ademod использует то же значение offset, равное 0.3, что и предшествующая команда amod, демодулированный сигнал z1 идентичен исходному модулирующему сигналу. При втором вызове функции ademod параметр offset опущен, поэтому демодулированный сигнал z2 имеет среднее значение, близкое к нулю (оно не в точности равно нулю из-за ошибок округления).

Fc = 25; % Несущая частота
Fs = 100; % Частота дискретизации
t = [0:1/Fs:5]'; % Моменты дискретизации сигнала
x = [cos(t), sin(t)]; % Два сигнала – косинус и синус
y = amod(x,Fc,Fs,'amdsb-tc',.3); % Осуществляем модуляцию,
% добавляя постоянное смещение, равное 0.3
z1 = ademod(y,Fc,Fs,'amdsb-tc',.3); % Демодуляция
z2 = ademod(y,Fc,Fs,'amdsb-tc'); % Демодуляция
plot(t,z1,'b',t,z2,'r--') % Графики демодулированных сигналов

На рисунке график сигнала z1 выведен сплошной линией, а график сигнала z2 — пунктирной линией.

Еще один пример использования функции ademod можно найти на странице с описанием функции amod под заголовком “Пример использования гильбертовского фильтра”.

Сопутствующие функции: amod, dmod, ddemod, amodce, ademodce.

  В оглавление \ К следующему разделу \ К предыдущему разделу

 

Поиск по сайту:

Система Orphus

Яндекс.Метрика