поэтапный. PulseWaveformLibrary

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

Описание

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

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

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

pulselib = phased.PulseWaveformLibrary
pulselib = phased.PulseWaveformLibrary(Name,Value)

Описание

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

пример

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

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

Свойства

развернуть все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 = 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 = phased.PulseWaveformLibrary('SampleRate',fs, ...
    'WaveformSpecification',{waveform1,waveform2,waveform3});

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

wav3 = wavlib(3);

Постройте форму волны с помощью метода plot.

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

Создайте библиотеку формы волны, состоящую из трех форм волны. Библиотека содержит одно прямоугольное, один линейный FM и формы волны ступенчатого 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 = phased.PulseWaveformLibrary('SampleRate',fs, ...
    'WaveformSpecification',{waveform1,waveform2,waveform3});

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

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

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

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

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

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

waveform1 = {'Rectangular','PRF',10e3 'PulseWidth',50e-6};
waveform2 = {'LinearFM','PRF',10e3,'PulseWidth',50e-6,'SweepBandwidth',1e5, ...
    'SweepDirection','Up','SweepInterval', 'Positive'};
pulsesib = phased.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')

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

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

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

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

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

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

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

Задайте Гиперболическую функцию формы волны FM.

function y = HyperbolicFM(fs,prf,pw,freq,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

Больше о

развернуть все

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

Введенный в R2018a