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

demod

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

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

Библиотека

EngeeDSP

Синтаксис

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

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

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

Аргументы

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

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

Details

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

Типы данных

Float32, Float64, Char, String

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

Да

# fs — частота дискретизации
Произвольный тип

Details

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

# method — метод модуляции
Произвольный тип

Details

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

  • "am" или "amdsb-sc" — амплитудная демодуляция, две боковые полосы, подавленная несущая. Умножает y на синусоиду с частотой fc и применяет фильтр нижних частот Баттерворта пятого порядка с использованием функции filtfilt.

    x = y.*cos(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x = filtfilt(b,a,x);
  • "amdsb-tc" — амплитудная демодуляция, две боковые полосы, передаваемая несущая. Умножает y на синусоиду с частотой fc и применяет фильтр нижних частот Баттерворта пятого порядка с использованием функции filtfilt.

    x = y.*cos(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x = filtfilt(b,a,x);

    Если вы укажете opt, то demod вычтет скалярное значение opt из x. Значение по умолчанию для параметра opt равно 0.

  • "amssb" — амплитудная демодуляция. Умножает y на синусоиду с частотой fc и применяет фильтр нижних частот Баттерворта пятого порядка с использованием функции filtfilt.

    x = y.*cos(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x = filtfilt(b,a,x);
  • "fm" — частотная демодуляция. Демодулирует форму частотно-модулированного (ЧМ) сигнала путем модуляции преобразования Гильберта y с помощью комплексной экспоненциальной частоты -fc Гц и получает в результате мгновенную частоту.

    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" — фазовая демодуляция. Демодулирует форму фазово-модулированного (ФМ) сигнала путем модуляции преобразования Гильберта y с помощью комплексной экспоненциальной частоты -fc Гц и получает в результате мгновенную фазу.

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

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

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

  • "ppm" — позиционно-импульсная демодуляция. Определяет положения импульсов в сигнале с позиционно-импульсной модуляцией y. Для правильной демодуляции импульсы не должны перекрываться. Длина x равна length(t)*fc/fs.

  • "qam" — квадратурная амплитудная демодуляция. Функция [x1,x2] = demod(y,fc,fs,"qam") умножает y на косинус и синус с частотой fc и применяет фильтр нижних частот Баттерворта пятого порядка, используя filtfilt.

    x1 = y.*cos(2*pi*fc*t);
    x2 = y.*sin(2*pi*fc*t);
    [b,a] = butter(5,fc*2/fs);
    x1 = filtfilt(b,a,x1);
    x2 = filtfilt(b,a,x2);

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

# fc — несущая частота
Произвольный тип

Details

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

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

Details

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

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

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

Details

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