поэтапный. PulseCompressionLibrary

Создайте библиотеку импульсных спецификаций сжатия

Описание

Система phased.PulseCompressionLibrary object™ создает импульсную библиотеку сжатия. Библиотека содержит наборы параметров, которые описывают импульсные операции сжатия, выполняемые на полученных сигналах сгенерировать их ответ области значений. Можно пользоваться этой библиотекой, чтобы выполнить обработка фрагмента или согласованная фильтрация. Этот объект может обработать формы волны, созданные объектом phased.PulseWaveformLibrary.

Сделать импульсную библиотеку сжатия

  1. Создайте объект phased.PulseCompressionLibrary и установите его свойства.

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

complib = phased.PulseCompressionLibrary()
complib = phased.PulseCompressionLibrary(Name,Value)

Описание

complib = phased.PulseCompressionLibrary() Системный объект создает импульсную библиотеку сжатия, complib, со значениями свойств по умолчанию.

пример

complib = phased.PulseCompressionLibrary(Name,Value) создает импульсную библиотеку сжатия с каждым набором свойства Name к заданному Value. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN). Заключите каждое имя свойства в одинарные кавычки.

Пример: complib = phased.PulseCompressionLibrary('SampleRate',1e9,'WaveformSpecification',{{'Rectangular','PRF',1e4,'PulseWidth',100e-6},{'SteppedFM','PRF',1e4}},'ProcessingSpecification',{{'MatchedFilter','SpectumWindow','Hann'},{'MatchedFilter','SpectrumWindow','Taylor'}}) создает библиотеку с двумя согласованными фильтрами. Каждый является соответствующим к прямоугольной форме волны и другому к ступенчатой форме волны FM. Согласованные фильтры используют окно Hann и окно Тейлора, соответственно.

Свойства

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

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и функция release разблокировала их.

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Частота дискретизации формы волны, заданная как положительная скалярная величина. Все формы волны имеют ту же частоту дискретизации. Модули находятся в герц.

Пример: 100e3

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

Скорость распространения сигнала, заданная как положительная скалярная величина. Модули исчисляются в метрах в секунду. Скорость распространения по умолчанию является значением, возвращенным physconst('LightSpeed'). Смотрите physconst.

Пример: 3e8

Типы данных: 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

Импульсные описания сжатия, заданные как массив ячеек обработки спецификаций. Каждая ячейка задает различную спецификацию обработки. Каждая спецификация обработки является самостоятельно массивом ячеек, содержащим тип обработки и обработку аргументов.

{{Processing 1 Specification},{Processing 2 Specification},{Processing 3 Specification}, ...}
Каждая спецификация обработки указывает, в котором тип обработки примениться к форме волны и аргументам нуждался для обработки.
{ProcessType,Name,Value,...}
Значением ProcessType является или 'MatchedFilter' или 'StretchProcessor'.

  • 'MatchedFilter' – Аргументы пары "имя-значение"

    • 'Coefficients', coeff – задает коэффициенты согласованного фильтра, coeff, как вектор-столбец. Если не заданный, коэффициенты вычисляются из свойства WaveformSpecification. Для Ступенчатой формы волны FM, содержащей несколько импульсов, coeff соответствует каждому импульсу до импульсного индекса, изменений idx.

    • 'SpectrumWindow', sw – указывает, что окно взвешивания спектра, sw, применилось к форме волны. Значения окна являются одним из 'None', 'Hamming', 'Chebyshev', 'Hann', 'Kaiser' и 'Taylor'. Значением по умолчанию является 'None'.

    • 'SidelobeAttenuation', slb – задает окно затухания бокового лепестка, slb, окна Чебышева или Тейлора как положительная скалярная величина. Значение по умолчанию равняется 30. Этот параметр применяется, когда вы устанавливаете 'SpectrumWindow' на 'Chebyshev' или 'Taylor'.

    • 'Beta', beta – задает параметр, beta, который определяет затухание бокового лепестка окна Kaiser как неотрицательный скаляр. Значение по умолчанию 0.5. Этот параметр применяется, когда вы устанавливаете 'SpectrumWindow' на 'Kaiser'.

    • 'Nbar', nbar – задает количество почти постоянных боковых лепестков уровня, nbar, рядом с основным лепестком в окне Тейлора как положительное целое число. Значение по умолчанию равняется 4. Этот параметр применяется, когда вы устанавливаете 'SpectrumWindow' на 'Taylor'.

    • 'SpectrumRange', sr – задает область спектра, sr, на который окно спектра применяется как 1 2 вектор, имеющий форму [StartFrequency EndFrequency]. Значение по умолчанию [0 1.0e5]. Этот параметр применяется, когда вы устанавливаете 'SpectrumWindow' на любое значение ни кроме 'Одного'. Модули находятся в Гц.

      И StartFrequency и EndFrequency измеряются в основополосной области [-Fs/2 Fs/2]. Fs является частотой дискретизации, заданной свойством SampleRate. StartFrequency не может быть больше, чем EndFrequency.

  • 'StretchProcessor' – Аргументы пары "имя-значение"

    • 'ReferenceRange', refrng – задает центр областей значений интереса, refrng, как положительная скалярная величина. refrng должен быть в однозначной области значений одного импульса. Значение по умолчанию 5000. Модули исчисляются в метрах.

    • 'RangeSpan', rngspan – задает промежуток областей значений интереса. rngspan, как положительная скалярная величина. Промежуток области значений сосредоточен в значении области значений, заданном в параметре 'ReferenceRange'. Значение по умолчанию 500. Модули исчисляются в метрах.

    • 'RangeFFTLength', len – задает длину БПФ в области области значений, len, как положительное целое число. Если не заданный, значение по умолчанию - то же самое как длина входных данных.

    • 'RangeWindow', rw задает окно, используемое для обработки области значений, rw, как один из 'None', 'Hamming', 'Chebyshev', 'Hann', 'Kaiser' и 'Taylor'. Значением по умолчанию является 'None'.

Пример: 'StretchProcessor'

Типы данных: string | struct

Линейные аргументы формы волны FM

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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}
Смотрите Добавляет Пользовательская Форма волны к Импульсной Библиотеке Формы волны для примера, который использует пользовательскую форму волны.

Использование

Синтаксис

[Y,rng] = pulselib(X,idx)

Описание

[Y,rng] = pulselib(X,idx) возвращает выборки сжатой импульсной формы волны, Y, заданного его индексом, idx, в библиотеке. RNG обозначает области значений, соответствующие Y.

Входные параметры

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

Входной сигнал, заданный как K с комплексным знаком-by-L матрица, K с комплексным знаком-by-N матрица или K с комплексным знаком-by-N-by-L массив. K обозначает количество быстрых выборок времени, L количество импульсов, и N является количеством каналов. Каналы могут быть элементами массива или лучами.

Типы данных: double
Поддержка комплексного числа: Да

Индекс спецификации обработки в импульсной библиотеке сжатия, заданной как положительное целое число.

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

Выходные аргументы

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

Выходной сигнал, возвращенный как M с комплексным знаком-by-L матрица, M с комплексным знаком-by-N матрица или M с комплексным знаком-by-N-by-L массив. M обозначает количество быстрых выборок времени, L количество импульсов, и N является количеством каналов. Каналы могут быть элементами массива или лучами. Количество размерностей Y совпадает с количеством размерностей X.

Когда согласованная фильтрация выполняется, M равен количеству строк в X. Когда обработка фрагмента выполняется, и вы задаете значение для пары "имя-значение" RangeFFTLength, M установлен в значение RangeFFTLength. Когда вы не задаете RangeFFTLength, M равен количеству строк в X.

Типы данных: double
Поддержка комплексного числа: Да

Демонстрационные области значений, возвращенные как вектор длины-M с действительным знаком, где M является количеством строк Y. Элементы этого вектора обозначают области значений, соответствующие строкам Y.

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

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

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

release(obj)

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

plotResponseПостройте ответ диапазона от импульсной библиотеки сжатия
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

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

Создайте прямоугольную форму волны и линейную форму волны FM. Используйте методы обработки в импульсной библиотеке сжатия к процессу области значений формы волны. Используйте согласованную фильтрацию для прямоугольной формы волны и обработку фрагмента для линейной формы волны FM.

Создайте две формы волны с помощью Системного объекта phased.PulseWaveformLibrary. Частота дискретизации составляет 1 МГц, и импульсная частота повторения для обеих форм волны составляет 1 кГц. Ширина импульса является также тем же самым в 50 микросекунд.

fs = 1.0e6;
prf = 1e3;
pw = 50e-6;
waveform1 = {'Rectangular','PRF',prf,'PulseWidth',pw};
waveform2 = {'LinearFM','PRF',prf,'PulseWidth',pw,...
    'SweepBandwidth',1e5,'SweepDirection','Up',...
    'SweepInterval', 'Positive'};
pulselib = phased.PulseWaveformLibrary('WaveformSpecification',...
    {waveform1,waveform2},'SampleRate',fs);

Получите формы волны для обработки импульсной библиотекой сжатия.

rectwav = pulselib(1);
lfmwav = pulselib(2);

Создайте библиотеку обработки сжатия с помощью Системного объекта phased.PulseCompressionLibrary с двумя спецификациями обработки. Первая спецификация обработки является согласованной фильтрацией, и второй является обработка фрагмента.

mf = getMatchedFilter(pulselib,1);
procspec1 = {'MatchedFilter','Coefficients',mf};
procspec2 = {'StretchProcessor','ReferenceRange',5000,...
    'RangeSpan',200,'RangeWindow','Hamming'};
comprlib = phased.PulseCompressionLibrary( ...,
    'WaveformSpecification',{waveform1,waveform2}, ...
    'ProcessingSpecification',{procspec1,procspec2}, ...
    'SampleRate',fs,'PropagationSpeed',physconst('Lightspeed'));

Процесс обе формы волны.

rect_out = comprlib(rectwav,1);
lfm_out = comprlib(lfmwav,2);
nsamp = fs/prf;
t = [0:(nsamp-1)]/fs;

plot(t*1000,real(rect_out))
hold on
plot(t*1000,real(lfm_out))
hold off
title('Pulse Compression Output')
xlabel('Time (millsec)')
ylabel('Amplitude')

Постройте ответ области значений сигнала LFM достижение трех целевых показателей. Области значений 2000, 4000, и 5 500 метров. Примите, что радарная область значений максимума составляет 10 км. Установите импульсный интервал повторения из максимальной области значений.

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

rmax = 10.0e3;
c = physconst('Lightspeed');
pri = 2*rmax/c;
fs = 1e6;
pri = ceil(pri*fs)/fs;
prf = 1/pri;
nsamp = pri*fs;
rxdata = zeros(nsamp,1);
t1 = 2*2000/c;
t2 = 2*4000/c;
t3 = 2*5500/c;
idx1 = floor(t1*fs);
idx2 = floor(t2*fs);
idx3 = floor(t3*fs);
lfm = phased.LinearFMWaveform('PulseWidth',10/fs,'PRF',prf, ...
    'SweepBandwidth',(30*fs)/40);
w = lfm();

Встройте часть формы волны импульса в полученный сигнал.

x = w(1:11);
rxdata(idx1:idx1+10) = x;
rxdata(idx2:idx2+10) = x;
rxdata(idx3:idx3+10) = x;

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

w1 = {'LinearFM','PulseWidth',10/fs,'PRF',prf,...
    'SweepBandwidth',(30*fs)/40};
wavlib = phased.PulseWaveformLibrary('SampleRate',fs,'WaveformSpecification',{w1});
wav = wavlib(1);

Сгенерируйте сигнал ответа области значений.

p1 = {'MatchedFilter','Coefficients',getMatchedFilter(wavlib,1),'SpectrumWindow','None'};
idx = 1;
complib = phased.PulseCompressionLibrary( ...
    'WaveformSpecification',{w1},...
    'ProcessingSpecification',{p1},...
    'SampleRate',fs,...
    'PropagationSpeed',c);
y = complib(rxdata,1);

Постройте ответ области значений обработанных данных

plotResponse(complib,rxdata,idx,'Unit','mag');

Больше о

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

Расширенные возможности

Введенный в R2018a