Создайте библиотеку импульсных сигналов
The pulseWaveformLibrary
Системная object™ создает библиотеку импульсных сигналов. Формы волны в библиотеке могут быть разных типов или одного типа с различными параметрами. Можно использовать эту библиотеку для передачи различных видов импульсов во время симуляции.
Как создать библиотеку формы волны
Создайте pulseWaveformLibrary
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
Системный объект создает библиотеку импульсных сигналов, pulselib
= pulseWaveformLibrarypulselib
, со значениями свойств по умолчанию. Значение по умолчанию состоит из прямоугольной формы волны и линейной 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 Использование Системных объектов.
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
- имя аргумента и 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
- имя аргумента и 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
- имя аргумента и 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
- имя аргумента и 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}
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 = pulseWaveformLibrary('SampleRate',fs, ... 'WaveformSpecification',{waveform1,waveform2,waveform3});
Извлеките форму волны из библиотеки.
wav3 = wavlib(3);
Постройте график формы волны с помощью plot
способ.
plot(wavlib,3,'PlotType','complex')
Создайте библиотеку формы волны, состоящую из трех форм волны. Библиотека содержит одну прямоугольную, одну линейную 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)
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 = 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-форму волны и добавьте ее к 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')
Задайте функцию гиперболического 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
The 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).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.