exponenta event banner

pulseWaveformLibrary

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

Описание

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

Создание библиотеки форм сигналов

  1. Создать pulseWaveformLibrary и задайте его свойства.

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

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

Создание

Описание

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

пример

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, ...}
Этот объект System поддерживает четыре встроенные формы сигнала, а также позволяет задать пользовательские формы сигнала. Для встроенных форм сигнала спецификатор формы сигнала состоит из идентификатора формы сигнала, за которым следуют несколько пар имя-значение, задающих свойства формы сигнала. Для пользовательских форм сигнала спецификатор формы сигнала состоит из дескриптора определяемой пользователем функции формы сигнала и входных аргументов функций.

Типы сигналов

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

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

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

Аргументы линейной ЧМ-формы сигнала

Укажите дополнительные пары, разделенные запятыми 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

Полоса пропускания ЧМ-сдвига, заданная как положительный скаляр. Единицы измерения в герцах.

Пример: 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
Поддержка комплексного номера: Да

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

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

release(obj)

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

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

Примеры

свернуть все

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

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.

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

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.

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

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

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.

Определите пользовательский гиперболический ЧМ-сигнал и добавьте его в pulseWaveformLibrary Системный объект вместе с линейным ЧМ-сигналом. Постройте график гиперболического сигнала.

Укажите параметры гиперболической ЧМ-формы сигнала. Длительность импульса - 75 мс, интервал повторения импульсов - 100 мс. Центральная частота - 500 Гц, полоса пропускания - 400 Гц.

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

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

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

Постройте график сложного гиперболического ЧМ-сигнала.

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.

Определите функцию гиперболического ЧМ-сигнала.

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