Создайте библиотеку импульсных форм волны
Система phased.PulseWaveformLibrary
object™ создает библиотеку импульсных форм волны. Формы волны в библиотеке могут иметь различные типы или иметь тот же тип с различными параметрами. Можно пользоваться этой библиотекой, чтобы передать различные виды импульсов во время симуляции.
Сделать библиотеку формы волны
Создайте объект phased.PulseWaveformLibrary
и установите его свойства.
Вызовите объект с аргументами, как будто это была функция.
Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.
pulselib = phased.PulseWaveformLibrary
pulselib = phased.PulseWaveformLibrary(Name,Value)
Системный объект создает библиотеку импульсных форм волны, pulselib
= phased.PulseWaveformLibrarypulselib
, со значениями свойств по умолчанию. Значение по умолчанию состоит из прямоугольной формы волны и линейной формы волны 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).
SampleRate
— Частота дискретизации формы волны1e6
(значение по умолчанию) | положительная скалярная величинаЧастота дискретизации формы волны, заданная как положительная скалярная величина. Все формы волны имеют ту же частоту дискретизации. Модули находятся в герц.
Пример:
100e3
Типы данных: double
WaveformSpecification
— Импульсные формы волны{{'Rectangular','PRF',10e3,'PulseWidth',100e-6},{'LinearFM','PRF',1e4,'PulseWidth',50e-6,'SweepBandwidth',1e5,'SweepDirection','Up','SweepInterval','Positive'}}
(значение по умолчанию) | массив ячеекИмпульсные формы волны, заданные как массив ячеек. Каждая ячейка массива содержит спецификацию одной формы волны.
{{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
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
{'LinearFM','PRF',1e4,'PulseWidth',50e-6,'SweepBandwidth',1e5,... 'SweepDirection','Up','SweepInterval','Positive'}
PRF
— Импульсная частота повторения1e4
(значение по умолчанию) | положительная скалярная величинаИмпульсная частота повторения (PRF), заданная как положительная скалярная величина. Модули находятся в герц. Смотрите Импульсные Ограничения Частоты Повторения для ограничений на PRF.
Пример: 20e3
Типы данных: double
PulseWidth
— Импульсная длительность5e-5
(значение по умолчанию) | положительная скалярная величинаИмпульсная длительность, заданная как положительная скалярная величина. Модули находятся в секундах. Вы не можете задать и PulseWidth
и DutyCycle
.
Пример: 100e-6
Типы данных: double
DutyCycle
— Импульсный рабочий цикл0.5
| положительная скалярная величинаИмпульсный рабочий цикл, заданный как положительная скалярная величина, больше, чем нуль и меньше чем или равная одному. Вы не можете задать и PulseWidth
и DutyCycle
.
Пример: 0.7
Типы данных: double
SweepBandwidth
— Пропускная способность развертки FM1e5
(значение по умолчанию) | положительная скалярная величинаПропускная способность развертки FM, заданной как положительная скалярная величина. Модули находятся в герц.
Пример: 100e3
Типы данных: double
SweepDirection
— Пропускная способность развертки FM'Up'
(значение по умолчанию) | 'Down'
Направление развертки FM, заданной как 'Up'
или 'Down'
. 'Up'
соответствует увеличивающейся частоте. 'Down'
соответствует уменьшающейся частоте.
Типы данных: char
SweepInterval
— Интервал развертки FM'Positive'
(значение по умолчанию) | 'Symmetric'
Интервал развертки FM, заданный как 'Positive'
или 'Symmetric'
. Если вы устанавливаете это значение свойства на 'Positive'
, форма волны развертывает интервал между 0 и B, где B является значением аргумента SweepBandwidth
. Если вы устанавливаете это значение свойства на 'Symmetric'
, форма волны развертывает интервал между –B/2 и B/2.
Пример: 'Symmetric'
Типы данных: char
Envelope
— Функция конверта'Rectangular'
(значение по умолчанию) | 'Gaussian'
Функция конверта, заданная как 'Rectangular'
или 'Gaussian'
.
Пример: 'Gaussian'
Типы данных: char
FrequencyOffset
— Смещение частоты импульса0
(значение по умолчанию) | скалярСмещение частоты импульса, заданного как скаляр. Частота сместила, переключает частоту сгенерированной импульсной формы волны. Модули находятся в герц.
Пример: 100e3
Типы данных: double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
{'PhaseCoded','PRF',1e4,'Code','Zadoff-Chu', 'SequenceIndex',3,'ChipWidth',5e-6,'NumChips',8}
PRF
— Импульсная частота повторения1e4
(значение по умолчанию) | положительная скалярная величинаИмпульсная частота повторения (PRF), заданная как положительная скалярная величина. Модули находятся в герц. Смотрите Импульсные Ограничения Частоты Повторения для ограничений на PRF.
Пример: 20e3
Типы данных: double
Code
— Тип кода модуляции фазы'Frank'
(значение по умолчанию) | 'P1'
| 'P2'
'Px'
| 'Zadoff-Chu'
| 'P3'
| 'P4'
| 'Barker'
Тип кода модуляции фазы, заданного как 'Frank'
, 'P1'
, 'P2'
, 'Px'
, 'Zadoff-Chu'
, 'P3'
, 'P4'
или 'Barker'
.
Пример: 'P1'
Типы данных: char
SequenceIndex
— индекс последовательности Zadoff-Chu
1
(значение по умолчанию) | положительное целое числоИндекс последовательности используется для кода Zadoff-Chu
, заданного как положительное целое число. Значение SequenceIndex
должно быть относительно главным к значению NumChips
.
Пример 3
Чтобы включить эту пару "имя-значение", установите свойство Code
на 'Zadoff-Chu'
.
Типы данных: double
ChipWidth
— Длительность чипа1e-5
(значение по умолчанию) | положительная скалярная величинаДлительность чипа, заданная как положительная скалярная величина. Модули находятся в секундах. Смотрите Ограничения Чипа для ограничений на размеры кристалла.
Пример: 30e-3
Типы данных: double
NumChips
— Количество вносит форму волны4
(значение по умолчанию) | положительное целое числоКоличество вносит форму волны, заданную как положительное целое число. Смотрите Ограничения Чипа для ограничений на размеры кристалла.
Пример 3
Типы данных: double
FrequencyOffset
— Смещение частоты импульса0
(значение по умолчанию) | скалярСмещение частоты импульса, заданного как скаляр. Частота сместила, переключает частоту сгенерированной импульсной формы волны. Модули находятся в герц.
Пример: 100e3
Типы данных: double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
{'Rectangular','PRF',10e3,'PulseWidth',100e-6}
PRF
— Импульсная частота повторения1e4
(значение по умолчанию) | положительная скалярная величинаИмпульсная частота повторения (PRF), заданная как положительная скалярная величина. Модули находятся в герц. Смотрите Импульсные Ограничения Частоты Повторения для ограничений на PRF.
Пример: 20e3
Типы данных: double
PulseWidth
— Импульсная длительность5e-5
(значение по умолчанию) | положительная скалярная величинаИмпульсная длительность, заданная как положительная скалярная величина. Модули находятся в секундах. Вы не можете задать и PulseWidth
и DutyCycle
.
Пример: 100e-6
Типы данных: double
DutyCycle
— Импульсный рабочий цикл0.5
| положительная скалярная величинаИмпульсный рабочий цикл, заданный как положительная скалярная величина, больше, чем нуль и меньше чем или равная одному. Вы не можете задать и PulseWidth
и DutyCycle
.
Пример: 0.7
Типы данных: double
FrequencyOffset
— Смещение частоты импульса0
(значение по умолчанию) | скалярСмещение частоты импульса, заданного как скаляр. Частота сместила, переключает частоту сгенерированной импульсной формы волны. Модули находятся в герц.
Пример: 100e3
Типы данных: double
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
{'SteppedFM','PRF',10e-4}
PRF
— Импульсная частота повторения1e4
(значение по умолчанию) | положительная скалярная величинаИмпульсная частота повторения (PRF), заданная как положительная скалярная величина. Модули находятся в герц. Смотрите Импульсные Ограничения Частоты Повторения для ограничений на PRF.
Пример: 20e3
Типы данных: double
PulseWidth
— Импульсная длительность5e-5
(значение по умолчанию) | положительная скалярная величинаИмпульсная длительность, заданная как положительная скалярная величина. Модули находятся в секундах. Вы не можете задать и PulseWidth
и DutyCycle
.
Пример: 100e-6
Типы данных: double
DutyCycle
— Импульсный рабочий цикл0.5
| положительная скалярная величинаИмпульсный рабочий цикл, заданный как положительная скалярная величина, больше, чем нуль и меньше чем или равная одному. Вы не можете задать и PulseWidth
и DutyCycle
.
Пример: 0.7
Типы данных: double
NumSteps
— Количество частоты продвигается в форму волны5
(значение по умолчанию) | положительное целое числоКоличество частоты продвигается в форму волны, заданную как положительное целое число.
Пример 3
Типы данных: double
FrequencyStep
— Линейный размер шага частоты20e3
(значение по умолчанию) | положительная скалярная величинаЛинейный размер шага частоты, заданный как положительная скалярная величина.
Пример: 100.0
Типы данных: double
FrequencyOffset
— Смещение частоты импульса0
(значение по умолчанию) | скалярСмещение частоты импульса, заданного как скаляр. Частота сместила, переключает частоту сгенерированной импульсной формы волны. Модули находятся в герц.
Пример: 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)
idx
Индекс формы волны в библиотеке формы волныИндекс формы волны в библиотеке формы волны, заданной как положительное целое число.
Пример 2
Типы данных: double
waveform
— Выборки формы волныВыборки формы волны, возвращенные как комплексный вектор.
Типы данных: double
Поддержка комплексного числа: Да
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
getMatchedFilter | Коэффициенты согласованного фильтра для импульсной формы волны |
plot | Постройте форму волны от библиотеки формы волны |
Создайте библиотеку формы волны, состоящую из трех форм волны. Библиотека содержит прямоугольное, линейный 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
Свойство PRF
должно удовлетворить эти ограничения:
Продукт PRF
и PulseWidth
должен быть меньше чем или равен одному. Это условие выражает требование, чтобы ширина импульса была меньше чем одним импульсным интервалом повторения.
Отношение SampleRate
к PRF
должно быть целым числом. Это условие выражает требование, чтобы количество выборок в одном импульсном интервале повторения было целым числом.
Значения свойств ChipWidth
и NumChips
должны удовлетворить эти ограничения:
Продукт PRF
, ChipWidth
и NumChips
должен быть меньше чем или равен одному. Это условие выражает требование, чтобы сумма длительности всех микросхем была меньше чем одним импульсным интервалом повторения.
Продуктом SampleRate
и ChipWidth
должно быть целое число. Это условие выражает требование, чтобы количество выборок в чипе было целым числом.
Таблица показывает дополнительные ограничения на количество микросхем для различных типов кода.
Если свойство Code ... | Затем свойство NumChips должно быть... |
---|---|
'Frank' , 'P1' или 'Px' | Полный квадрат |
'P2' | Четное число, которое является полным квадратом |
'Barker' | 2 , 3 , 4 , 5 , 7 , 11 или 13 |
Указания и ограничения по применению:
Функция объекта plot
не поддерживается.
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
phased.LinearFMWaveform
| phased.PhaseCodedWaveform
| phased.PulseCompressionLibrary
| phased.RectangularWaveform
| phased.SteppedFMWaveform
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.