pulseCompressionLibrary

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

Описание

pulseCompressionLibrary Система 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. Согласованные фильтры используют окно Hann и окно Тейлора, соответственно.

Свойства

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

Если в противном случае не обозначено, свойства являются ненастраиваемыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируют, когда вы вызываете их, и 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' к любому значению ни кроме 'Одного'. Модули находятся в Гц.

      Оба 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 имя аргумента и 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 с комплексным знаком-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.

Создайте две формы волны с помощью 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);

Создайте библиотеку обработки сжатия с помощью pulseCompressionLibrary Система 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 object. The axes object with title Pulse Compression Output contains 2 objects of type line.

Постройте ответ области значений сигнала LFM достижение трех целевых показателей в областях значений 2 000, 4000, и 5 500 метров. Принятие максимальной области значений радара составляет 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 object. The axes object with title Range Response Pattern contains an object of type line.

Больше о

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

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

Введенный в R2021a