pulseWaveformLibrary

Создайте библиотеку импульсных сигналов

Описание

The pulseWaveformLibrary Системная object™ создает библиотеку импульсных сигналов. Формы волны в библиотеке могут быть разных типов или одного типа с различными параметрами. Можно использовать эту библиотеку для передачи различных видов импульсов во время симуляции.

Как создать библиотеку формы волны

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

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

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

pulselib = pulseWaveformLibrary Системный объект создает библиотеку импульсных сигналов, pulselib, со значениями свойств по умолчанию. Значение по умолчанию состоит из прямоугольной формы волны и линейной FM волны.

пример

pulselib = pulseWaveformLibrary(Name,Value) создает библиотеку импульсных сигналов с каждым свойством Name установить на заданное Value. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN). Заключайте каждое имя свойства в одинарные кавычки.

Пример: pulselib = pulseWaveformLibrary('SampleRate',1e9,'WaveformSpecification',{{'Rectangular','PRF',1e4,'PulseWidth',100e-6},{'SteppedFM','PRF',1e4}}) создает библиотеку, содержащую одну прямоугольную форму волны и одну ступенчатую FM форму волны, обе дискретизированные на частоте 1 ГГц.

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

Пример: 100e3

Типы данных: double

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

{{Waveform 1 Specification},{Waveform 2 Specification},{Waveform 3 Specification}, ...}
Каждая спецификация формы волны также является массивом ячеек, содержащим параметры формы волны. Записи в камере спецификации являются идентификатором импульса и набором пар "имя-значение", характерных для этой формы волны.
{PulseIdentifier,Name1,Value1,Name2,Value2, ...}
Этот системный объект поддерживает четыре встроенные формы сигналов, а также позволяет вам задавать пользовательские формы сигналов. Для встроенных форм волны спецификатор формы волны состоит из идентификатора формы волны, за которым следуют несколько пары "имя-значение", устанавливающих свойства формы волны. Для пользовательских форм волны спецификатор формы сигнала состоит из указателя на определяющую пользователем функцию формы сигнала и входных параметров функций.

Типы формы волны

Тип формы волныИдентификатор формы волныАргументы формы волны
Линейный FM'LinearFM'Аргументы линейной формы волны FM
Фазовое кодирование'PhaseCoded'Аргументы в форме волны с фазовым кодированием
Прямоугольный'Rectangular'Прямоугольные аргументы в форме волны
Ступенчатый FM'SteppedFM'Пошаговые аргументы формы волны FM
ОбычайУказатель на функциюПользовательские аргументы формы волны

Пример: {{'Rectangular','PRF',10e3,'PulseWidth',100e-6},{'Rectangular','PRF',100e3,'PulseWidth',20e-6}}

Типы данных: cell

Аргументы линейной формы волны FM

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: {'LinearFM','PRF',1e4,'PulseWidth',50e-6,'SweepBandwidth',1e5,... 'SweepDirection','Up','SweepInterval','Positive'}

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

Пример: 20e3

Типы данных: double

Длительность импульса, заданная как положительная скалярная величина. Модули указаны в секундах. Вы не можете задать оба PulseWidth и DutyCycle.

Пример: 100e-6

Типы данных: double

Импульсный коэффициент заполнения, заданный как положительная скалярная величина, больше нуля и меньше или равный единице. Вы не можете задать оба PulseWidth и DutyCycle.

Пример: 0.7

Типы данных: double

Шумовая полоса свип-сигнала FM, заданная как положительная скалярная величина. Модули указаны в герцах.

Пример: 100e3

Типы данных: double

Направление свипа FM, заданное как 'Up' или 'Down'. 'Up' соответствует возрастающей частоте. 'Down' соответствует уменьшающейся частоте.

Типы данных: char

Интервал FM свипа, заданный как 'Positive' или 'Symmetric'. Если вы задаете это значение свойства 'Positive'форма волны переносит интервал между 0 и B, где B является SweepBandwidth значение аргумента. Если вы задаете это значение свойства 'Symmetric'форма волны переносит интервал между - B/2 и B/2.

Пример: 'Symmetric'

Типы данных: char

Функция огибающей, заданная как 'Rectangular' или 'Gaussian'.

Пример: 'Gaussian'

Типы данных: char

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

Пример: 100e3

Типы данных: double

Аргументы в форме волны с фазовым кодированием

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: {'PhaseCoded','PRF',1e4,'Code','Zadoff-Chu', 'SequenceIndex',3,'ChipWidth',5e-6,'NumChips',8}

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

Пример: 20e3

Типы данных: double

Тип кода фазовой модуляции, заданный как 'Frank', 'P1', 'P2', 'Px', 'Zadoff-Chu', 'P3', 'P4', или 'Barker'.

Пример: 'P1'

Типы данных: char

Индекс последовательности, используемый для Zadoff-Chu код, заданный как положительное целое число. Значение SequenceIndex должны быть относительно простыми по отношению к значению NumChips.

Пример: 3

Зависимости

Чтобы включить эту пару "имя-значение", установите Code свойство к 'Zadoff-Chu'.

Типы данных: double

Длительность чипа, заданная как положительная скалярная величина. Модули указаны в секундах. Ограничения по размерам чипов см. в разделе «Ограничения чипов».

Пример: 30e-3

Типы данных: double

Количество чипов в форме волны, заданное как положительное целое число. Ограничения по размерам чипов см. в разделе «Ограничения чипов».

Пример: 3

Типы данных: double

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

Пример: 100e3

Типы данных: double

Прямоугольные аргументы в форме волны

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: {'Rectangular','PRF',10e3,'PulseWidth',100e-6}

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

Пример: 20e3

Типы данных: double

Длительность импульса, заданная как положительная скалярная величина. Модули указаны в секундах. Вы не можете задать оба PulseWidth и DutyCycle.

Пример: 100e-6

Типы данных: double

Импульсный коэффициент заполнения, заданный как положительная скалярная величина, больше нуля и меньше или равный единице. Вы не можете задать оба PulseWidth и DutyCycle.

Пример: 0.7

Типы данных: double

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

Пример: 100e3

Типы данных: double

Пошаговые аргументы формы волны FM

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: {'SteppedFM','PRF',10e-4}

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

Пример: 20e3

Типы данных: double

Длительность импульса, заданная как положительная скалярная величина. Модули указаны в секундах. Вы не можете задать оба PulseWidth и DutyCycle.

Пример: 100e-6

Типы данных: double

Импульсный коэффициент заполнения, заданный как положительная скалярная величина, больше нуля и меньше или равный единице. Вы не можете задать оба PulseWidth и DutyCycle.

Пример: 0.7

Типы данных: double

Количество шагов частоты в форме волны, заданное как положительное целое число.

Пример: 3

Типы данных: double

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

Пример: 100.0

Типы данных: double

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

Пример: 100e3

Типы данных: double

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

Вы можете создать пользовательскую форму сигнала из пользовательской функции. Первым входным параметром функции должна быть частота дискретизации. Для примера задайте функцию гиперболической формы волны,

function wav = HyperbolicFM(fs,prf,pw,freq,bw,fcent),
где fs - частота дискретизации и prf, pw, freq, bw, и fcent являются другими аргументами формы волны. Функция должна иметь по крайней мере один выходной аргумент, wav, чтобы вернуть выборки каждого импульса. Этот выход должен быть вектором-столбцом. Могут быть другие выходы, возвращенные после выборок формы волны.

Затем создайте спецификацию формы волны, используя указатель на функцию вместо идентификатора формы волны. Первая камера спецификации формы волны должна быть указателем на функцию. Остальные камеры содержат все входные аргументы функции, кроме частоты дискретизации. Задайте все входные параметры в том порядке, в котором они передаются в функцию.

waveformspec = {@HyperbolicFM,prf,pw,freq,bw,fcent}
См. пример добавления пользовательской формы волны в библиотеку импульсного сигнала для использования пользовательской формы волны.

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

Синтаксис

Описание

пример

waveform = pulselib(idx) возвращает выборки формы волны, waveform, заданный его индексом, idx, в библиотеке.

Входные параметры

расширить все

Индекс формы волны в библиотеке формы волны, заданный как положительное целое число.

Пример: 2

Типы данных: double

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

расширить все

Выборки формы волны, возвращенные как комплексный вектор.

Типы данных: double
Поддержка комплексного числа: Да

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

getMatchedFilterСогласованные фильтры для импульсного сигнала
plotПостройте график формы волны из библиотеки формы волны
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Создайте библиотеку формы волны, состоящую из трех форм волны. Библиотека содержит прямоугольную, линейную FM и закодированную в фазе форму волны. Затем получите и постройте график действительной и мнимой частей закодированной в фазе формы волны.

waveform1 = {'Rectangular','PRF',1e4,'PulseWidth', 50e-6};
waveform2 = {'LinearFM','PRF',1e4,'PulseWidth',50e-6, ...
    'SweepBandwidth',1e5,'SweepDirection','Up',...
    'SweepInterval', 'Positive'};
waveform3 = {'PhaseCoded','PRF',1e4,'Code','Zadoff-Chu', ...
    'SequenceIndex',3,'ChipWidth',5e-6,'NumChips',8};
fs = 1e6;
wavlib = pulseWaveformLibrary('SampleRate',fs, ...
    'WaveformSpecification',{waveform1,waveform2,waveform3});

Извлеките форму волны из библиотеки.

wav3 = wavlib(3);

Постройте график формы волны с помощью plot способ.

plot(wavlib,3,'PlotType','complex')

Figure contains 2 axes. Axes 1 with title Phase-coded pulse waveform: real part, pulse 1 contains an object of type line. Axes 2 with title Phase-coded pulse waveform: imaginary part, pulse 1 contains an object of type line.

Создайте библиотеку формы волны, состоящую из трех форм волны. Библиотека содержит одну прямоугольную, одну линейную FM и одну ступенчатую FM форму волны. Затем постройте график действительных частей первых трех импульсов формы волны stepped-fm.

waveform1 = {'Rectangular','PRF',1e4,'PulseWidth',70e-6};
waveform2 = {'LinearFM','PRF',1e4,'PulseWidth',70e-6, ...
    'SweepBandwidth',1e5,'SweepDirection','Up', ...
    'SweepInterval', 'Positive'};
waveform3 = {'SteppedFM','PRF',1e4,'PulseWidth', 70e-6,'NumSteps',5, ...
    'FrequencyStep',50000,'FrequencyOffset',0};
fs = 1e6;
wavlib = pulseWaveformLibrary('SampleRate',fs, ...
    'WaveformSpecification',{waveform1,waveform2,waveform3});

Постройте график первых трех импульсов формы волны с помощью plot способ.

plot(wavlib,3,'PulseIdx',1)

Figure contains an axes. The axes with title Stepped FM pulse waveform: real part, pulse 1 contains an object of type line.

plot(wavlib,3,'PulseIdx',2)

Figure contains an axes. The axes with title Stepped FM pulse waveform: real part, pulse 2 contains an object of type line.

plot(wavlib,3,'PulseIdx',3)

Figure contains an axes. The axes with title Stepped FM pulse waveform: real part, pulse 3 contains an object of type line.

Этот пример показов, как поместить две формы волны в библиотеку формы волны и как извлечь и построить график их коэффициентов согласованного фильтра.

Создайте библиотеку импульсов, состоящую из прямоугольной и линейной FM волны.

waveform1 = {'Rectangular','PRF',10e3 'PulseWidth',50e-6};
waveform2 = {'LinearFM','PRF',10e3,'PulseWidth',50e-6,'SweepBandwidth',1e5, ...
    'SweepDirection','Up','SweepInterval', 'Positive'};
pulsesib = pulseWaveformLibrary('SampleRate',1e6,...
    'WaveformSpecification',{waveform1,waveform2});

Найдите коэффициенты согласованного фильтра для каждой формы волны и постройте график их реальных частей.

coeff1 = getMatchedFilter(pulsesib,1,1);
subplot(2,1,1)
stem(real(coeff1))
title('Matched filter coefficients, real part')
coeff2 = getMatchedFilter(pulsesib,2,1);
subplot(2,1,2)
stem(real(coeff2))
title('Matched filter coefficients, real part')

Figure contains 2 axes. Axes 1 with title Matched filter coefficients, real part contains an object of type stem. Axes 2 with title Matched filter coefficients, real part contains an object of type stem.

Задайте пользовательскую гиперболическую FM-форму волны и добавьте ее к p ulseWaveformLibrary Системный объект вместе с линейной FM-формой волны. Постройте график гиперболической формы волны.

Задайте параметры гиперболического FM-сигнала. Ширина импульса составляет 75 мс, а интервал повторения импульса составляет 100 мс. Центральная частота составляет 500 Гц, а ширина полосы - 400 Гц.

fs = 50e3;
pri = 0.1;
prf = 1/pri;
pw = 0.075;
bw = 400.0;
fcent = 500.0;

Создайте библиотеку импульсных сигналов, состоящую из гиперболической FM волны и линейной FM волны.

pulselib = pulseWaveformLibrary('SampleRate',fs, ...
    'WaveformSpecification',{{@HyperbolicFM,prf,pw,bw,fcent}, ...
    {'LinearFM','PRF',prf,'PulseWidth',pw, ...
    'SweepBandwidth',bw,'SweepDirection','Up',...
    'SweepInterval','Positive'}});

Постройте график сложной гиперболической FM волны.

plot(pulselib,1,'PlotType','complex')

Figure contains 2 axes. Axes 1 with title HyperbolicFM: real part, pulse 1 contains an object of type line. Axes 2 with title HyperbolicFM: imaginary part, pulse 1 contains an object of type line.

Задайте функцию гиперболического FM-сигнала.

function y = HyperbolicFM(fs,prf,pw,bw,fcent)
pri = 1/prf;
t = [0:1/fs:pri]';
idx = find(t <= pw);
fl = fcent - bw/2;
fh = fcent + bw/2;
y = zeros(size(t));
arg = 2*pi*fl*fh/bw*pw*log(1.0 - bw*t(idx)/fh/pw);
y(idx) = exp(1i*arg);
end

Подробнее о

расширить все

Расширенные возможности

.
Введенный в R2021a