exponenta event banner

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'}}) создает библиотеку с двумя подходящими фильтрами. Один соответствует прямоугольной форме сигнала, а другой - ступенчатой ЧМ форме сигнала. Соответствующие фильтры используют окно Ханна и окно Тейлора соответственно.

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

Пример: 100e3

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

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

Пример: 3e8

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

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

{{Waveform 1 Specification},{Waveform 2 Specification},{Waveform 3 Specification}, ...}
Каждая спецификация формы сигнала также представляет собой матрицу ячеек, содержащую параметры формы сигнала. Записи в ячейке спецификации являются идентификатором импульса и набором пар имя-значение, характерных для этой формы сигнала.
{PulseIdentifier,Name1,Value1,Name2,Value2, ...}

Этот объект System поддерживает четыре встроенные формы сигнала, а также позволяет задать пользовательские формы сигнала. Для встроенных форм сигнала спецификатор формы сигнала состоит из идентификатора формы сигнала, за которым следуют несколько пар имя-значение, задающих свойства формы сигнала. Для пользовательских форм сигнала спецификатор формы сигнала состоит из дескриптора определяемой пользователем функции формы сигнала и входных аргументов функций.

Типы сигналов

Тип импульсаИдентификатор импульсаАргументы формы сигнала
Линейный ЧМ'LinearFM'Аргументы линейной ЧМ-формы сигнала
Фаза закодирована'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 собственность. Для ступенчатого ЧМ сигнала, содержащего несколько импульсов, 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, как положительный скаляр. refrng должен находиться в пределах однозначного диапазона одного импульса. Значение по умолчанию - 5000. Единицы в метрах.

    • 'RangeSpan',rngspan - определяет диапазон интересующих диапазонов. rngspan, как положительный скаляр. Диапазон центрируется по значению диапазона, указанному в 'ReferenceRange' параметр. Значение по умолчанию - 500. Единицы в метрах.

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

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

Пример: 'StretchProcessor'

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

Аргументы линейной ЧМ-формы сигнала

Укажите дополнительные пары, разделенные запятыми 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

Полоса пропускания ЧМ-сдвига, заданная как положительный скаляр. Единицы измерения в герцах.

Пример: 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. Если не указано RangeFFTLength, M равно количеству строк в X.

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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