Создайте библиотеку импульсных сигналов
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
— Импульсный рабочий цикл
| положительная скалярная величинаИмпульсный рабочий цикл в виде положительной скалярной величины, больше, чем нуль и меньше чем или равной одному. Вы не можете задать оба 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
— Смещение частоты импульса
(значение по умолчанию) | скалярСмещение частоты импульса в виде скаляра. Частота возместила, переключает частоту сгенерированного импульсного сигнала. Модули находятся в герц.
Пример: 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
индекс последовательности
(значение по умолчанию) | положительное целое числоИндекс последовательности используется для Zadoff-Chu
код в виде положительного целого числа. Значение SequenceIndex
должно быть относительно главным к значению NumChips
.
Пример 3
Чтобы включить эту пару "имя-значение", установите Code
свойство к 'Zadoff-Chu'
.
Типы данных: double
ChipWidth
— Длительность чипа1e-5
(значение по умолчанию) | положительная скалярная величинаДлительность чипа в виде положительной скалярной величины. Модули находятся в секундах. Смотрите Ограничения Чипа для ограничений на размеры кристалла.
Пример: 30e-3
Типы данных: double
NumChips
— Количество вносит форму волны
(значение по умолчанию) | положительное целое числоКоличество вносит форму волны в виде положительного целого числа. Смотрите Ограничения Чипа для ограничений на размеры кристалла.
Пример 3
Типы данных: double
FrequencyOffset
— Смещение частоты импульса
(значение по умолчанию) | скалярСмещение частоты импульса в виде скаляра. Частота возместила, переключает частоту сгенерированного импульсного сигнала. Модули находятся в герц.
Пример: 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
— Импульсный рабочий цикл
| положительная скалярная величинаИмпульсный рабочий цикл в виде положительной скалярной величины, больше, чем нуль и меньше чем или равной одному. Вы не можете задать оба PulseWidth
и DutyCycle
.
Пример: 0.7
Типы данных: double
FrequencyOffset
— Смещение частоты импульса
(значение по умолчанию) | скалярСмещение частоты импульса в виде скаляра. Частота возместила, переключает частоту сгенерированного импульсного сигнала. Модули находятся в герц.
Пример: 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
— Импульсный рабочий цикл
| положительная скалярная величинаИмпульсный рабочий цикл в виде положительной скалярной величины, больше, чем нуль и меньше чем или равной одному. Вы не можете задать оба PulseWidth
и DutyCycle
.
Пример: 0.7
Типы данных: double
NumSteps
— Количество частоты продвигается в форму волны
(значение по умолчанию) | положительное целое числоКоличество частоты продвигается в форму волны в виде положительного целого числа.
Пример 3
Типы данных: double
FrequencyStep
— Линейный размер шага частоты20e3
(значение по умолчанию) | положительная скалярная величинаЛинейный размер шага частоты в виде положительной скалярной величины.
Пример: 100.0
Типы данных: double
FrequencyOffset
— Смещение частоты импульса
(значение по умолчанию) | скалярСмещение частоты импульса в виде скаляра. Частота возместила, переключает частоту сгенерированного импульсного сигнала. Модули находятся в герц.
Пример: 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. Затем постройте действительные части первых трех импульсов ступенчатого - из формы волны.
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 и добавьте его в 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')
Задайте Гиперболическую функцию формы волны 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
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.