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

EngeePhased.SteppedFMWaveform

Генератор сигнала со ступенчатой частотной модуляцией.

Библиотека

EngeePhased

Блок

Cтупенчатая ЧМ

Описание

Системный объект EngeePhased.SteppedFMWaveform представляет собой генератор сигнала со ступенчатой частотной модуляцией (ЧМ).

Чтобы сгенерировать сигнал со ступенчатой ЧМ, выполните следующие действия:

  1. Создайте объект EngeePhased.SteppedFMWaveform и установите его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • waveform = EngeePhased.SteppedFMWaveform() — создает системный объект waveform сигнала со ступенчатой ЧМ со свойствами по умолчанию.

  • waveform = EngeePhased.SteppedFMWaveform(Name=Value) — создает системный объект waveform генератора сигнала со ступенчатой ЧМ с указанным свойством "Name", установленным на указанное значение Value. Вы можете указать дополнительные свойства в виде пар имя-значение в любом порядке (Name1=Value1,…​,NameN=ValueN).

Использование

  • Y = waveform() — возвращает отсчеты импульсов со ступенчатой ЧМ в виде вектора-столбца Y. Выходной сигнал Y получается в результате увеличения частоты предыдущего выходного сигнала на величину, заданную свойством FrequencyStep.

  • Y = waveform(prfidx) — использует индекс prfidx для выбора частоты повторения импульсов (PRF) из предопределенного вектора значений, заданного свойством PRF. Этот синтаксис применяется, если для свойства PRFOutputPort установлено значение true.

  • Y = waveform(freqoffset) — использует freqoffset для генерации сигнала со смещением частоты. Используйте этот синтаксис в случаях, когда необходимо динамически обновлять частоту передаваемых импульсов. Этот синтаксис применяется, если для свойства FrequencyOffsetSource установлено значение "Input port".

  • Y,prf = waveform(___) — также возвращает текущую частоту повторения импульсов prf. Чтобы использовать этот синтаксис, установите для свойства PRFOutputPort значение true, а для свойства OutputFormat значение "Pulses".

  • Y,coeff = waveform(___) — также возвращает коэффициенты согласованного фильтра coeff для текущего импульса. Чтобы использовать этот синтаксис, установите для свойства CoefficientsOutputPort значение true.

Вы можете комбинировать необязательные входные и выходные аргументы, если заданы свойства, которые их включают. Необязательные входы и выходы должны быть перечислены в том же порядке, что и свойства, которые их включают. Например, Y,prf,coeff = waveform(prfidx,freqoffset).

Аргументы

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

prfidx — индекс частоты повторения импульсов
целое положительное число

Details

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

Зависимости

Чтобы использовать этот аргумент, установите для свойства PRFOutputPort значение true.

freqoffset — смещение частоты, Гц
скаляр

Details

Смещение частоты, заданное в виде скаляра.

Зависимости

Чтобы использовать этот аргумент, установите для свойства FrequencyOffsetSource значение "Input port".

Типы данных

Float64

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

Y — импульсный сигнал
вектор-столбец

Details

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

Типы данных

Float64

prf — частота повторения импульсов
скаляр

Details

Текущая частота повторения импульсов в Гц, возвращаемая в виде скаляра.

Зависимости

Чтобы использовать этот аргумент, установите для свойства PRFOutputPort значение true, а для свойства OutputFormat значение "Pulses".

Типы данных

Float64

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

да

coeff — коэффициенты согласованного фильтра
вектор | матрица

Details

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

Зависимости

Чтобы использовать этот аргумент, установите для свойства CoefficientsOutputPort значение true.

Типы данных

Float64

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

да

Свойства

# FrequencyStep — размер линейного шага по частоте
Вещественное число

Details

Размер линейного шага по частоте, заданный в виде положительного скаляра. Единицы измерения — Гц.

Значение по умолчанию — 20e3.

# NumSteps — количество шагов по частоте в импульсе
Целое число

Details

Число шагов по частоте, заданное в виде положительного целого числа.

Значение по умолчанию — 5.

# NumSamples — число отсчетов выходного сигнала
Целое число

Details

Число отсчетов выходного сигнала, заданное в виде положительного целого числа.

Значение по умолчанию — 100.

Зависимости

Чтобы использовать это свойство, установите для свойства OutputFormat значение "Samples".

# OutputFormat — формат выходного сигнала
Строка

Details

Формат выходного сигнала в виде "Pulses" (по умолчанию) или "Samples":

  • Если вы устанавливаете для этого свойства значение "Pulses", то выход блока состоит из нескольких импульсов. Количество импульсов — это значение свойства NumPulses.

  • Если вы устанавливаете для этого свойства значение "Samples", то выход блока состоит из нескольких отсчетов. Количество отсчетов — это значение свойства NumSamples.

# FrequencyOffsetSource — источник установки смещения частоты
Строка

Details

Источник установки смещения частоты, заданный в виде "Property" (по умолчанию) или "Input port":

  • Если установлено значение "Property", то смещение определяется значением свойства FrequencyOffset.

  • Если установлено значение "Input port", то смещение определяется значением аргумента freqoffset.

# NumPulses — число импульсов выходного сигнала
Целое число

Details

Число импульсов выходного сигнала, заданное в виде положительного целого числа.

Значение по умолчанию — 1.

Зависимости

Чтобы использовать это свойство, установите для свойства OutputFormat значение "Pulses".

# PRF — частота повторения импульсов
Вещественное число

Details

Частота повторения импульсов (PRF), заданная в виде скаляра или вектора-строки. Единицы измерения — Гц. Период следования импульсов (PRI) является обратной величиной значения (PRF) частоты повторения импульсов. Значение PRF должно удовлетворять следующим ограничениям:

  • Произведение PRF и PulseWidth должно быть меньше или равно единице. Это условие требует, чтобы ширина импульса была меньше одного PRI. Для сигнала с фазовым кодированием длительность импульса равна произведению длительности одного чипа на количество чипов.

  • Отношение SampleRate к PRF должно быть целым числом. Это условие требует, чтобы количество отсчетов в одном PRI было целым числом.

Значение PRF можно установить, используя только значения свойства PRF или значения свойства в сочетании с входным аргументом prfidx.

  • Если PRFOutputPort имеет значение false, PRF устанавливается только с помощью свойств PRF. Вы можете:

    • Реализовать постоянную PRF, указав свойство PRF как положительное вещественное скалярное значение.

    • Реализовать дискретную PRF, указав свойство PRF как вектор-строку с положительными вещественными элементами. Каждый вызов объекта использует последовательные элементы этого вектора в качестве PRF. Как только объект достигает последнего элемента вектора, он циклически продолжает процесс с первым элементом вектора.

  • Когда PRFOutputPort имеет значение true, вы можете установить значение PRF, используя свойство PRF в сочетании с входным аргументом prfidx. Вы реализуете выбираемую PRF, указав свойство PRF как вектор-строку с положительными вещественными элементами. При выполнении объекта выбор PRF осуществляется с использованием индекса, указанного во входном аргументе prfidx, для индексации вектора PRF.

Во всех случаях количество выходных отсчетов фиксировано, если вы установите для свойства OutputFormat значение "Samples". При использовании изменяющейся частоты повторения импульсов (PRF) и установке для свойства OutputFormat значения "Pulses" количество отсчетов может меняться.

Значение по умолчанию — 10e3.

# CoefficientsOutputPort — включить вывод коэффициентов согласованного фильтра
Логический тип

Details

Включить или выключить вывод коэффициентов согласованного фильтра, указав значение false (по умолчанию) или true. Установите для этого свойства значение true, чтобы включить вывод коэффициентов согласованного фильтра для формы сигнала, использованной во время моделирования.

# PulseWidth — длительность импульса
Вещественное число

Details

Длительность импульса, заданная в виде положительного скаляра. Значение должно удовлетворять условию PulseWidth ≤ 1/PRF. Единицы измерения — секунды.

Значение по умолчанию — 50e−6.

Зависимости

Чтобы использовать это свойство, установите для свойства DurationSpecification значение "Pulse width".

# SampleRate — частота дискретизации
Вещественное число

Details

Частота дискретизации сигнала, заданная как положительный скаляр. Единицы измерения — Гц.

Значение по умолчанию — 100e3.

# DurationSpecification — спецификация длительности импульса
Строка

Details

Метод установки длительности импульса в виде "Pulse width" (по умолчанию):

  • "Pulse width" — длительность импульса устанавливается с помощью свойства PulseWidth.

# PRFOutputPort — включить вывод PRF
Логический тип

Details

Если установить для этого свойства значение true, можно передать аргумент индекса объекту для выбора предопределенного значения из вектора значений свойства PRF. Если установить для этого свойства значение false (по умолчанию), объект будет использовать свойство PRF для определения последовательности PRF, используемой в моделировании.

# FrequencyOffset — смещение частоты
Вещественное число

Details

Смещение частоты, заданное в виде скаляра. Единица измерения — Гц.

Значение по умолчанию — 0.

Зависимости

Чтобы использовать это свойство, установите для свойства FrequencyOffsetSource значение "Property".

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

Специальные для системных объектов генераторов сигнала

bandwidth

Ширина полосы пропускания сигнала

plot

Построение графика импульсного сигнала

Примеры

Формирование сигналов со ступенчатой частотной модуляцией

Details

Сформируем сигнал со ступенчатой частотной модуляцией с частотой дискретизации 10 МГц, длительностью ступени 5 мкс, количеством шагов 4 и полосой сигнала 5 МГц.

Выполним инициализацию параметров.

fs = 10e6 # Частота дискретизации (Гц)
pulseWidth = 5e-6; # Длительность одного импульса (с)
numSteps = 4 # Общее число шагов частоты
freqStep = 5e6 / numSteps; # Шаг частоты (Гц) – полная полоса 5 МГц
freqOffset = 0 # Смещение частоты (Гц)

# Единая частота повторения для всех сигналов
PRF = round(1/(2*pulseWidth)); # Гц
numSweeps = 4; # Количество чипов для отображения

Воспользуемся EngeePhased.SteppedFMWaveform для создания системного объекта зондирующего сигнала sfm_waveform.

sfm_waveform = EngeePhased.SteppedFMWaveform(
    SampleRate = fs,
    PulseWidth = pulseWidth,
    PRF = PRF,
    NumSteps = numSteps,
    FrequencyStep = freqStep,
    FrequencyOffset = freqOffset,
    OutputFormat = "Pulses",
    NumPulses = numSweeps
);

Выполним вызов системного объекта EngeePhased.SteppedFMWaveform c помощью переменной sfm_signal.

sfm_signal = sfm_waveform();

С помощью функции plot построим осциллограмму в виде IQ-компонент, модуль и фазу сигнала.

# построение IQ-компонент
t_grid = range(start = 0,step = 1/fs,length = length(sfm_signal)) * 1e6 # сетка времени, мкс
fig1 = plot(t_grid,real.(sfm_signal),title = "синфазная составляющая",lab="",ylab="Амплитуда")
fig2 = plot(t_grid,imag.(sfm_signal),title = "квадратурная составляющая",lab="",xlab = "Время, мкс",ylab="Амплитуда");

plot(fig1,fig2,layout = (2,1))

object phased stepped waveform 2 ru

# построение модуля и фазы сигнала
fig3 = plot(t_grid,abs.(sfm_signal),title = "Модуль комплексного сигнала",lab="",ylab="Амплитуда");
fig4 = plot(t_grid,angle.(sfm_signal)*180/pi,title = "Аргумент комплексного сигнала",lab="",xlab = "Время, мкс",ylab="Фаза, град.");

plot(fig3,fig4,layout = (2,1))

object phased stepped waveform 3 ru

Основной характеристикой сигнала является частотный спектр и спектрограмма. Воспользуемся встроенной функцией periodogram.

# расчет спектра сигнала
spec_CFM,f = EngeePhased.Functions.periodogram(
    sfm_signal, # исходный сигнал
    ones(size(sfm_signal)...),
    8192; # длина частоты дискретизации
    out = :data, # тип выхода
    fs = fs, # частота дискретизации
    spectrumtype = "power" # тип спектра
);

Визуализируем результат с помощью функции plot.

plot(
    f * 1e-3,
    EngeePhased.Functions.mag2db.(spec_CFM),
    lab="", xlab = "Частота, кГц",
    ylab = "Мощность, дБВт",
    title = "Спектр сигнала"
)

object phased stepped waveform 4 ru

Для вычисления спектрограммы воспользуемся встроенной функцией spectrogram.

# расчет спектрограммы
spectgm_cfm,f1,t1 = EngeeDSP.Functions.spectrogram(
    real.(sfm_signal);
    nfft = 1024, # длина БПФ
    window = 50,
    noverlap = 0, # перекрытие окна
    spectrumtype = "power", # тип спектра — по мощности
    freqrange = "onesided", # диапазон спектра — односторонний
    out = :data, # тип выхода — массив данных
    fs = fs # частота дискретизации
);

Визуализируем результат расчета спектрограммы с помощью функции heatmap.

# построение спектрограммы
heatmap(
    t1[:]*1e3,
    f1[:]*1e-6,
    abs.(spectgm_cfm),color = :jet,
    xlab = "Время, мс",
    ylab = "Частота Доплера, МГц",
)

object phased stepped waveform 5 ru

Дополнительно

Сигнал со ступенчатой частотной модуляцией

Details

В сигналах со ступенчатой ЧМ группа импульсов совместно охватывает определенную полосу пропускания. Каждый импульс в этой группе занимает определенную центральную частоту, и эти центральные частоты равномерно распределены в пределах всей полосы пропускания.

Алгоритмы

Сигнал со ступенчатой частотной модуляцией представляет собой последовательность импульсов, частота которых изменяется от импульса к импульсу дискретными шагами:

где

  •  — амплитуда сигнала;

  •  — период изменения частоты;

  •  — величина частотного шага (ступени);

  •  — количество ступеней частоты;

  •  — начальная частота;

  •  — длительность импульса на одной ступени;

  •  — определяет прямоугольную огибающую:

Для генерации сигнала со ступенчатой частотной модуляцией необходимо задать следующие параметры:

  • частота дискретизации фильтра ;

  • длительность импульса ;

  • частота следования импульсов ;

  • количество импульсов ;

  • начальная частота сигнала ;

  • конечная частота сигнала ;

  • девиация частоты .

object phased stepped waveform 1 ru

Литература

  1. Richards, M. A. Fundamentals of Radar Signal Processing. New York: McGraw-Hill, 2005.