pulseWaveformLibrary

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

Описание

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 objects. Axes object 1 with title Phase-coded pulse waveform: real part, pulse 1 contains an object of type line. Axes object 2 with title Phase-coded pulse waveform: imaginary part, pulse 1 contains an object of type line.

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

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

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

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object 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 objects. Axes object 1 with title Matched filter coefficients, real part contains an object of type stem. Axes object 2 with title Matched filter coefficients, real part contains an object of type stem.

Задайте пользовательскую гиперболическую форму волны FM и добавьте его в pulseWaveformLibrary Системный объект вместе с линейной формой волны 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 objects. Axes object 1 with title HyperbolicFM: real part, pulse 1 contains an object of type line. Axes object 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