Документация Engee

modulate

Страница в процессе разработки.

Модуляция для моделирования систем связи.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • (y,t) = modulate(x, fc, fs, method, opt) — модулирует вещественный полезный сигнал x с использованием несущей частоты fc, частоты дискретизации fs и метода method с дополнительными параметрами, заданными в opt и возвращает внутренний вектор времени t.

  • (y,t) = modulate(x, fc, fs, method) — модулирует вещественный полезный сигнал x с использованием несущей частоты fc, частоты дискретизации fs и метода method.

  • (y,t) = modulate(x, fc, fs) — модулирует вещественный полезный сигнал x с использованием несущей частоты fc и частоты дискретизации fs. Если x является матрицей, то модулированный сигнал вычисляется независимо для каждого столбца и сохраняется в соответствующем столбце y.

Аргументы

Входные аргументы

# opt — дополнительные параметры для некоторых методов
Arbitrary type

Details

Дополнительные параметры для некоторых методов. Подробнее в method.

Типы данных

Float32, Float64, Char, String

Поддержка комплексных чисел

Да

# fs — частота дискретизации
Arbitrary type

Details

Частота дискретизации, указанная как вещественный положительный скаляр.

# method — метод модуляции
Arbitrary type

Details

Используемый метод модуляции, возможные значения:

  • "am" или "amdsb-sc" — амплитудная модуляция, две боковые полосы, подавленная несущая. Умножает x на синусоиду с частотой fc.

    y = x.*cos(2*pi*fc*t)
  • "amdsb-tc" — амплитудная модуляция, две боковые полосы, передаваемая несущая. Вычитает скалярное значение opt от x и умножает результат на синусоиду с частотой fc.

    y = (x-opt).*cos(2*pi*fc*t)

    Если вы не укажете opt, то modulate использует значение по умолчанию min(min(x)) , чтобы полезный сигнал (x-opt) был неотрицательным и имел минимальное значение, равное 0.

  • "amssb" — амплитудная модуляция, одиночная боковая полоса. Умножает x на синусоиду с частотой fc и добавляет результат к преобразованию Гильберта x , умноженному на сдвинутую по фазе синусоиду с частотой fc.

    y = x.*cos(2*pi*fc*t)+imag(hilbert(x)).*sin(2*pi*fc*t)

    Этот метод эффективно устраняет верхнюю боковую полосу частот.

  • "fm" — частотная модуляция. Создает синусоиду с мгновенной частотой, которая изменяется в зависимости от полезного сигнала x.

    y = cos(2*pi*fc*t + opt*cumsum(x))

    Функция cumsum является прямоугольной аппроксимацией интеграла от x. Функция modulate использует opt как константу частотной модуляции. Если вы не укажете значение opt, то modulate использует значение по умолчанию opt=(fc/fs)*2*pi/(max(max(x))), поэтому максимальное отклонение частоты от fc будет fc Гц.

  • "pm" — фазовая модуляция. Создает синусоиду с частотой fc фаза которой изменяется в зависимости от полезного сигнала x.

    y=cos(2*pi*fc*t + opt*x)

    Функция modulate использует opt как константу фазовой модуляции. Если вы не укажете значение opt, то modulate использует значение по умолчанию opt=pi/(max(max(x))), поэтому максимальное отклонение фазы будет рад.

  • "pwm" — широтно-импульсная модуляция. Создает широтно-импульсный сигнал modulated на основе длин импульсов в x. Элементы x находятся в интервале от 0 до 1 и определяют длительность каждого импульса в долях периода. Импульсы начинаются в начале каждого периода несущей, то есть они выравниваются по левому краю. При вызове функции modulate(x,fc,fs,"pwm","centered") получаются импульсы, центрированные в начале каждого периода. Длина _(y,t) равна length(x)*fs/fc.

  • "ppm" — позиционно-импульсная модуляция. Создает сигнал с позиционно-импульсной модуляцией из позиций импульсов в x. Элементы x находятся в интервале от 0 до 1, задавая левый край каждого импульса в долях периода. Значение opt представляет собой скаляр от 0 до 1, который определяет длину каждого импульса в долях периода. Значение по умолчанию для opt является 0.1. Длина _(y,t) равна length(x)*fs/fc.

  • "qam" — квадратурная амплитудная модуляция. Создает сигнал с использованием квадратурной амплитудной модуляции из сигналов x и opt.

    y = x.*cos(2*pi*fc*t) + opt.*sin(2*pi*fc*t)

    Входной аргумент opt должен быть той же размерности, что и x.

# x — полезный сигнал
Arbitrary type

Details

полезный сигнал, заданный как вещественный вектор или матрица.

# fc — несущая частота
Arbitrary type

Details

Несущая частота, используемая для модуляции полезного сигнала, заданная как вещественный положительный скаляр.

Выходные аргументы

# y — модулированный полезный сигнал

Details

Модулированный полезный сигнал, возвращаемый в виде вещественного вектора или матрицы. Сигнал y имеет ту же размерность, что и x, за исключением методов method: "pwm" и "ppm".

# t — внутренний вектор времени

Details

Внутренний вектор времени.