exponenta event banner

gpuConstantGammaClutter

Имитация постоянного гамма-нагромождения с помощью графического процессора

Описание

gpuConstantGammaClutter объект имитирует загромождение, выполняя вычисления на GPU.

Примечание

Для использования этого объекта необходимо установить лицензию Parallel Computing Toolbox™ и получить доступ к соответствующему графическому процессору. Дополнительные сведения о графических процессорах см. в разделе Вычисления графических процессоров (панель инструментов параллельных вычислений).

Чтобы вычислить возврат загромождения:

  1. Определите и настройте симулятор загромождений. См. раздел Строительство.

  2. Звонить step чтобы смоделировать возврат беспорядка для вашей системы в соответствии со свойствами gpuConstantGammaClutter. Поведение step относится к каждому объекту на панели инструментов.

Имитация беспорядка, которая constantGammaClutter условия основаны на следующих допущениях:

  • Радиолокационная система является моностатической.

  • Распространение происходит в свободном пространстве.

  • Рельеф местности однородный.

  • Нагромождение является неподвижным во время когерентности. Время когерентности показывает, как часто программа изменяет набор случайных чисел при моделировании беспорядка.

  • Поскольку сигнал является узкополосным, пространственный отклик и доплеровский сдвиг могут аппроксимироваться фазовыми сдвигами.

  • Радиолокационная система поддерживает постоянную высоту во время моделирования.

  • Радиолокационная система поддерживает постоянную скорость во время моделирования.

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной системным object™, можно вызвать объект с аргументами, как если бы это была функция. Например, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Строительство

H = gpuConstantGammaClutter создает имитационный объект System с постоянным гамма-загромождением, H. Этот объект имитирует загромождение возврата системы моностатического радара с использованием постоянной гамма-модели.

H = gpuConstantGammaClutter(Name,Value) создает объект моделирования постоянного гамма-загромождения, H, с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары. Name является именем свойства и Value - соответствующее значение. Name должно отображаться внутри отдельных кавычек (''). Можно указать несколько аргументов пары имя-значение в любом порядке как Name1,Value1,…,NameN,ValueN.

Свойства

Sensor

Рукоятка датчика

Укажите датчик как объект антенного элемента или как объект решетки, чей Element значение свойства является объектом антенного элемента. Если сенсор является массивом, он может содержать подрешетки.

По умолчанию: phased.ULA со значениями свойств по умолчанию

Gamma

Гамма-значение рельефа

Укажите значение γ, используемое в постоянной модели γ в качестве скаляра в децибелах. Величина γ зависит как от типа местности, так и от рабочей частоты.

По умолчанию: 0

EarthModel

Модель Земли

Укажите модель земли, используемую при моделировании загромождений, как одну из | 'Flat' | 'Curved' |. При установке для этого свойства значения 'Flat'Земля считается плоской плоскостью. При установке для этого свойства значения 'Curved'Земля считается сферой.

По умолчанию: 'Flat'

ClutterMinRange

Минимальный диапазон области загромождения (м)

Минимальный диапазон, при котором возвращается компьютерное загромождение, указанный как положительный скаляр. Минимальный диапазон должен быть неотрицательным. Это значение игнорируется, если оно меньше значения PlatformHeight. Единицы в метрах.

По умолчанию: 0

ClutterMaxRange

Максимальный диапазон области загромождения (м)

Укажите максимальный диапазон, в котором будут вычисляться значения загромождений. для моделирования беспорядка как положительного скаляра. Максимальный диапазон должен быть больше значения, указанного в PlatformHeight собственность. Единицы в метрах.

По умолчанию: 5000

ClutterAzimuthCenter

Азимутальный центр области нагромождения (град.)

Азимутальный угол в плоскости земли, вокруг которого формируются участки нагромождения. Участки формируются симметрично относительно этого угла.

По умолчанию: 0

ClutterAzimuthSpan

Азимутальный диапазон нагромождений (град.)

Укажите покрытие по азимуту (в градусах) области загромождения как положительный скаляр. Моделирование беспорядка охватывает область, имеющую заданный азимутальный диапазон, симметричный вокруг ClutterAzimuthCenter. Как правило, все участки нагромождения имеют свои азимутальные центры в пределах области, но PatchAzimuthSpan значение может привести к тому, что некоторые исправления выйдут за пределы области.

По умолчанию: 60

PatchAzimuthSpan

Азимутальный диапазон нагромождений (град.)

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

По умолчанию: 1

CoherenceTime

Время когерентности

Укажите время когерентности в секундах для моделирования беспорядка как положительный скаляр. По истечении времени когерентности step метод обновляет случайные числа, которые он использует для моделирования беспорядка при следующем импульсе. Значение inf означает, что случайные числа никогда не обновляются.

По умолчанию: inf

PropagationSpeed

Скорость распространения сигнала

Укажите скорость распространения сигнала в метрах в секунду как положительный скаляр.

По умолчанию: Скорость света

SampleRate

Частота выборки

Укажите частоту дискретизации в герцах как положительный скаляр. Значение по умолчанию соответствует 1 МГц.

По умолчанию: 1e6

PRF

Частота повторения импульсов

Частота повторения импульсов, PRF, заданная как скаляр или вектор строки. Единицы измерения в Гц. Интервал повторения импульсов PRI - это обратная частота повторения импульсов PRF. PRF должен удовлетворять этим ограничениям:

  • Произведение PRF и PulseWidth должно быть меньше или равно единице. Это условие выражает требование, чтобы длительность импульса была меньше одного интервала повторения импульса. Для сигнала с фазовым кодированием длительность импульса является произведением ширины элементарных посылок и количества элементарных посылок.

  • Отношение частоты выборки к любому элементу PRF должно быть целым числом. Это условие выражает требование, чтобы число выборок в одном интервале повторения импульсов было целым числом.

Можно выбрать значение PRF, используя только параметры свойств или параметры свойств вместе с prfidx входной аргумент step способ.

  • Когда PRFSelectionInputPort является false, PRF задается только с помощью свойств. Можно

    • реализовать постоянный PRF путем указания PRF как положительный действительный скаляр.

    • реализовать распределенный PRF путем указания PRF как вектор строки с положительными вещественными значениями. Затем каждый вызов step метод использует последовательные элементы этого вектора для PRF. Если достигнут последний элемент вектора, процесс продолжается циклически с первым элементом вектора.

  • Когда PRFSelectionInputPort является true, можно реализовать выбираемый PRF, указав PRF как вектор строки с положительными вещественными значениями. Но на этот раз, когда вы выполняете step выберите PRF путем передачи аргумента, указывающего индекс, в вектор PRF.

Во всех случаях количество выходных выборок фиксируется при установке OutputFormat свойство для 'Samples'. При использовании изменяющегося PRF и установке OutputFormat свойство для 'Pulses'количество образцов может варьироваться.

По умолчанию: 10e3

PRFSelectionInputPort

Включить вход выбора PRF

Включить вход выбора PRF, указанный как true или false. При установке для этого свойства значения false, метод step использует значения, установленные в PRF собственность. При установке для этого свойства значения true, вы передаете аргумент индекса в step для выбора значения из вектора PRF.

По умолчанию: false

OutputFormat

Формат выходного сигнала

Укажите формат выходного сигнала как один из | 'Pulses' | 'Samples' |. При установке OutputFormat свойство для 'Pulses', выходные данные step способ выполнен в виде множества импульсов. В этом случае количество импульсов является значением NumPulses собственность.

При установке OutputFormat свойство для 'Samples', выходные данные step способ выполнен в виде множества образцов. В этом случае количество выборок является значением NumSamples собственность. В приложениях PRF в шахматном порядке можно найти 'Samples' вариант удобнее, потому что step выходные данные всегда имеют одинаковый размер матрицы.

По умолчанию: 'Pulses'

NumPulses

Количество импульсов на выходе

Укажите количество импульсов на выходе step метод как положительное целое число. Это свойство применяется только при установке OutputFormat свойство для 'Pulses'.

По умолчанию: 1

NumSamples

Количество выборок в выходных данных

Укажите количество выборок в выходных данных step метод как положительное целое число. Обычно используется количество выборок в одном импульсе. Это свойство применяется только при установке OutputFormat свойство для 'Samples'.

По умолчанию: 100

OperatingFrequency

Рабочая частота системы

Укажите рабочую частоту системы в герцах как положительный скаляр. Значение по умолчанию соответствует 300 МГц.

По умолчанию: 3e8

TransmitSignalInputPort

Добавить вход для указания сигнала передачи

Установить для этого свойства значение true для добавления входного сигнала для указания сигнала передачи в step синтаксис. Установить для этого свойства значение false опустить сигнал передачи в step синтаксис. false опция менее затратна в вычислительном отношении; для использования этой опции необходимо также указать TransmitERP собственность.

По умолчанию: false

WeightsInputPort

Включить ввод весов

Установите для этого свойства значение true для входных весов.

Значение по умолчанию: false

TransmitERP

Эффективная передаваемая мощность

Укажите передаваемую эффективную излучаемую мощность (ERP) радиолокационной системы в ваттах как положительный скаляр. Это свойство применяется только при установке TransmitSignalInputPort свойство для false.

По умолчанию: 5000

PlatformHeight

Высота платформы РЛС с поверхности

Укажите высоту радиолокационной платформы (в метрах), измеренную вверх от поверхности, как неотрицательный скаляр.

По умолчанию: 300

PlatformSpeed

Скорость радиолокационной платформы

Укажите скорость радиолокационной платформы как неотрицательный скаляр в метрах в секунду.

По умолчанию: 300

PlatformDirection

Направление движения радиолокационной платформы

Указать направление движения радиолокационной платформы в виде вектора 2 на 1 в виде [AzimingAngle; Угол наклона] в градусах. Значение этого свойства по умолчанию указывает на то, что платформа перемещается перпендикулярно ширине антенной решетки радара.

Измеряют как азимут, так и угол места в локальной системе координат радиолокационной антенны или антенной решетки. Угол по азимуту должен быть от -180 до 180 градусов. Угол возвышения должен быть от -90 до 90 градусов.

По умолчанию: [90;0]

MountingAngles

Углы установки датчика (град.)

Укажите 3-элементный вектор, определяющий искривление, шаг и крен рамки датчика от инерционной рамки. 3 элемента определяют вращения вокруг осей z, y и x соответственно в таком порядке. При первом повороте оси тела поворачиваются вокруг оси Z. Поскольку эти углы определяют внутренние повороты, второй поворот выполняется вокруг оси y в ее новом положении в результате предыдущего поворота. Окончательное вращение вокруг оси X выполняется вокруг оси X при повороте первыми двумя вращениями в собственной системе.

По умолчанию: [0 0 0]

SeedSource

Источник начального числа для генератора случайных чисел

Укажите, как объект генерирует случайные числа. Значения этого свойства:

'Auto'Генератор случайных чисел MATLAB ® по умолчанию создает случайные числа. Использовать'Auto' при использовании этого объекта с программным обеспечением Parallel Computing Toolbox.
'Property'Объект использует собственный частный генератор случайных чисел для получения случайных чисел. Seed свойство этого объекта указывает начальное значение генератора случайных чисел. Использовать 'Property' если требуется воспроизводимые результаты и этот объект не используется с программным обеспечением Parallel Computing Toolbox.

По умолчанию: 'Auto'

Seed

Начальное число для генератора случайных чисел

Укажите начальное число для генератора случайных чисел как скалярное целое число от 0 до 232-1. Это свойство применяется при установке SeedSource свойство для 'Property'.

По умолчанию: 0

Методы

сбросСброс случайных чисел и счетчика времени для моделирования беспорядков
шагИмитация загромождения с использованием постоянной гамма-модели
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

Примеры

свернуть все

Смоделировать возврат беспорядка с местности с гамма-значением 0 дБ. Эффективная передаваемая мощность радиолокационной системы составляет 5 кВт.

Настройка характеристик радиолокационной системы. Эта система использует 4-элементный однородный линейный массив (ULA). Частота дискретизации составляет 1 МГц, а PRF - 10 кГц. Скорость распространения - это скорость света, а рабочая частота - 300 МГц. Радиолокационная платформа летит на 1 км над землей с траекторией, параллельной земле по оси решетки. Скорость платформы - 2000 м/с. Основной блок имеет угол углубления 30∘.

Nele = 4;
c = physconst('Lightspeed');
fc = 300e6;
lambda = c/fc;
array = phased.ULA('NumElements',Nele,'ElementSpacing',lambda/2);
fs = 1e6;
prf = 10e3;
height = 1000.0;
direction = [90;0];
speed = 2.0e3;
depang = 30.0;
mountingAng = [0,30,0];

Создайте объект моделирования загромождения графического процессора. Конфигурация предполагает, что земля плоская. Максимальный диапазон загромождения составляет 5 км, а максимальный азимутальный охват - ±60∘.

Rmax = 5000;
Azcov = 120;
tergamma = 0;
tpower = 5000;
clutter = gpuConstantGammaClutter('Sensor',array, ...
    'PropagationSpeed',c,'OperatingFrequency',fc,'PRF',prf, ...
    'SampleRate',fs,'Gamma',tergamma,'EarthModel','Flat' ,...
    'TransmitERP',tpower,'PlatformHeight',height, ...
    'PlatformSpeed',speed,'PlatformDirection',direction, ...
    'MountingAngles',mountingAng,'ClutterMaxRange',Rmax, ...
    'ClutterAzimuthSpan',Azcov,'SeedSource','Property', ...
    'Seed',40547);

Смоделировать возврат беспорядка для 10 импульсов.

Nsamp = fs/prf;
Npulse = 10;
clsig = zeros(Nsamp,Nele,Npulse);
for m = 1:Npulse
    clsig(:,:,m) = clutter();
end

Постройте график углово-доплеровской характеристики загромождения в 20-м бункере диапазона.

response = phased.AngleDopplerResponse('SensorArray',array, ...
    'OperatingFrequency',fc,'PropagationSpeed',c,'PRF',prf);
plotResponse(response,shiftdim(clsig(20,:,:)),'NormalizeDoppler',true);

Результаты не идентичны результатам, полученным при использовании constantGammaClutter из-за различий между вычислениями CPU и GPU.

Смоделировать возврат беспорядка с местности с гамма-значением 0 дБ. Сигнал передачи радиолокационной системы вводится при создании загромождения. В этом случае в свойстве не указывается эффективная передаваемая мощность сигнала.

Настройка характеристик радиолокационной системы. Эта система имеет 4-элементный однородный линейный массив (ULA). Частота дискретизации составляет 1 МГц, а PRF - 10 кГц. Скорость распространения - это скорость света, а рабочая частота - 300 МГц. Радиолокационная платформа летит на 1 км над землей с траекторией, параллельной земле по оси решетки. Скорость платформы - 2000 м/с. Мейнлобе имеет угол углубления 30 °.

Nele = 4;
c = physconst('LightSpeed');
fc = 300e6;
lambda = c/fc;
ha = phased.ULA('NumElements',Nele,'ElementSpacing',lambda/2);
fs = 1e6;
prf = 10e3;
height = 1000;
direction = [90;0];
speed = 2000;
mountingAng = [0,30,0];

Создайте объект моделирования загромождения GPU и настройте его для использования переданного сигнала в качестве входного аргумента. Конфигурация предполагает, что земля плоская. Максимальный диапазон загромождения составляет 5 км, а максимальный азимутальный охват ± 60 °.

Rmax = 5000;
Azcov = 120;
tergamma = 0;
clutter = gpuConstantGammaClutter('Sensor',ha,...
    'PropagationSpeed',c,'OperatingFrequency',fc,'PRF',prf,...
    'SampleRate',fs,'Gamma',tergamma,'EarthModel','Flat',...
    'TransmitSignalInputPort',true,'PlatformHeight',height,...
    'PlatformSpeed',speed,'PlatformDirection',direction,...
    'MountingAngles',mountingAng,'ClutterMaxRange',Rmax,...
    'ClutterAzimuthSpan',Azcov,'SeedSource','Property','Seed',40547);

Смоделировать возврат беспорядка для 10 импульсов. При каждом вызове объекта передайте сигнал передачи в качестве входного аргумента. Программное обеспечение автоматически вычисляет эффективную передаваемую мощность сигнала. Передающий сигнал представляет собой прямоугольный сигнал с шириной импульса 2 мкс.

tpower = 5000;
pw = 2e-6;
X = tpower*ones(floor(pw*fs),1);
Nsamp = fs/prf;
Npulse = 10;
clsig = zeros(Nsamp,Nele,Npulse);
for m = 1:Npulse
    clsig(:,:,m) = clutter(X);
end

Постройте график углово-доплеровской характеристики загромождения в 20-м бункере диапазона.

response = phased.AngleDopplerResponse('SensorArray',ha,...
    'OperatingFrequency',fc,'PropagationSpeed',c,'PRF',prf);
plotResponse(response,shiftdim(clsig(20,:,:)),...
    'NormalizeDoppler',true);

Результаты не идентичны результатам, полученным при использовании constantGammaClutter из-за различий между вычислениями CPU и GPU.

В большинстве случаев не имеет значения, что GPU и CPU используют разные случайные числа. Иногда может потребоваться воспроизвести один и тот же поток как на GPU, так и на CPU. В таких случаях можно настроить два глобальных потока таким образом, чтобы они создавали одинаковые случайные числа. Как GPU, так и CPU поддерживают комбинированный множественный рекурсивный генератор (mrg32k3a) с помощью NormalTransform параметр имеет значение 'Inversion'.

Определите начальное значение, используемое как для потока графического процессора, так и для потока ЦП.

seed = 7151;

Создайте поток случайных чисел CPU, использующий комбинированный множественный рекурсивный генератор и выбранное начальное значение. Затем используйте этот поток в качестве глобального потока для генерации случайных чисел на CPU.

stream_cpu = RandStream('CombRecursive','Seed',seed, ...
    'NormalTransform','Inversion');
RandStream.setGlobalStream(stream_cpu);

Создайте поток случайных чисел GPU, который использует комбинированный множественный рекурсивный генератор и одно и то же начальное значение. Затем используйте этот поток в качестве глобального потока для генерации случайных чисел на GPU.

stream_gpu = parallel.gpu.RandStream('CombRecursive','Seed',seed, ...
    'NormalTransform','Inversion');
parallel.gpu.RandStream.setGlobalStream(stream_gpu);

Создание загромождений как на CPU, так и на GPU с использованием глобального потока на каждой платформе.

clutter_cpu = constantGammaClutter('SeedSource','Auto');
clutter_gpu = gpuConstantGammaClutter('SeedSource','Auto');
cl_cpu = clutter_cpu();
cl_gpu = clutter_gpu();

Проверьте, что элементные различия между результатами CPU и GPU ничтожны.

maxdiff = max(max(abs(cl_cpu - cl_gpu)))
maxdiff = 3.4027e-18
eps
ans = 2.2204e-16

Ссылки

[1] Бартон, Дэвид. «Модели захламления земли для радиолокационного проектирования и анализа», Труды IEEE. Том 73, номер 2, февраль 1985, стр. 198-204.

[2] Лонг, Морис У. Радиолокационная отражательная способность Земли и моря, 3-й ред. Бостон: Artech House, 2001.

[3] Натансон, Фред Э., Дж. Патрик Рейли и Марвин Н. Коэн. Принципы проектирования радаров, 2-й ред. Мендем, Нью-Джерси: SciTech Publishing, 1999.

[4] Уорд, J. «Пространственно-временная адаптивная обработка для бортовых радиолокационных систем данных», Технический отчет 1015, Лаборатория Линкольна, MIT, декабрь 1994.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

Создание кода графического процессора
Создание кода CUDA ® для графических процессоров NVIDIA ® с помощью Coder™ графических процессоров

.
Представлен в R2021a