pulseCompressionLibrary

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

Описание

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

Чтобы создать библиотеку импульсного сжатия

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

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

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

Создание

Описание

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

пример

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

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

Свойства

расширить все

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в 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, что определяет ослабление бокового колеса окна Кайзера как неотрицательный скаляр. Значение по умолчанию является 0,5. Этот параметр применяется, когда вы задаете 'SpectrumWindow' на 'Kaiser'.

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

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

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

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

    • 'ReferenceRange', refrng - определяет центр областей значений интереса, refrng, как положительная скалярная величина. The 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 - имя аргумента и 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 - имя аргумента и 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}
См. пример добавления пользовательской формы волны в библиотеку импульсного сигнала для использования пользовательской формы волны.

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

Синтаксис

Описание

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

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

расширить все

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

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

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

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

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

расширить все

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

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

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

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

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

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

Создайте две формы волны, используя pulseWaveformLibrary Системные object™. Частота дискретизации составляет 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 = pulseWaveformLibrary('WaveformSpecification',...
    {waveform1,waveform2},'SampleRate',fs);

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

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

Создайте библиотеку обработки сжатия с помощью p ulseCompressionLibrary Системный object™ с двумя спецификациями обработки. Первой спецификацией обработки является согласованная фильтрация, а второй является обработка растяжения.

mf = getMatchedFilter(pulselib,1);
procspec1 = {'MatchedFilter','Coefficients',mf};
procspec2 = {'StretchProcessor','ReferenceRange',5000,...
    'RangeSpan',200,'RangeWindow','Hamming'};
comprlib = 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')

Figure contains an axes. The axes with title Pulse Compression Output contains 2 objects of type line.

Постройте график области значений сигнала LFM, поражающего три цели на областях значений 2000, 4000 и 5500 метров. Принимая максимальную дальность действия радара 10 км, определите интервал повторения импульса из максимальной области значений.

% Create the pulse waveform.
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();
%%
% Imbed the waveform part of the pulse into the received signal.
x = w(1:11);
rxdata(idx1:idx1+10) = x;
rxdata(idx2:idx2+10) = x;
rxdata(idx3:idx3+10) = x;

%%
% Create the pulse waveform library.
w1 = {'LinearFM','PulseWidth',10/fs,'PRF',prf,...
    'SweepBandwidth',(30*fs)/40};
wavlib = pulseWaveformLibrary('SampleRate',fs,'WaveformSpecification',{w1});
wav = wavlib(1);
%%
% Generate the range response signal.
p1 = {'MatchedFilter','Coefficients',getMatchedFilter(wavlib,1),'SpectrumWindow','None'};
idx = 1;
complib = pulseCompressionLibrary( ...
    'WaveformSpecification',{w1}, ...
    'ProcessingSpecification',{p1}, ...
    'SampleRate',fs, ...
    'PropagationSpeed',c);
y = complib(rxdata,1);
%%
% Plot range response of processed data
plotResponse(complib,rxdata,idx,'Unit','mag');

Figure contains an axes. The axes with title Range Response Pattern contains an object of type line.

Подробнее о

расширить все

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

.
Введенный в R2021a