gpuConstantGammaClutter

Симулируйте загромождение константы с помощью графический процессор

Описание

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

Примечание

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

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

  1. Определите и настройте симулятор загромождения. См. «Конструкция».

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

Симуляция загромождения, которая constantGammaClutter предоставляет основано на этих допущениях:

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

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

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

  • Загромождение закрашенной фигуры является стационарным во время когерентности. Coherence time указывает, как часто программа изменяет набор случайных чисел в симуляции загромождения.

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

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

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

Примечание

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

Конструкция

H = gpuConstantGammaClutter создает симуляционный Системный объект с постоянными гамма-загромождениями, 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

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

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

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

TransmitSignalInputPort

Добавьте вход, чтобы задать сигнал передачи

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

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

WeightsInputPort

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

Установите это свойство равным true для входных весов.

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

TransmitERP

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

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

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

PlatformHeight

Высота радарной платформы с поверхности

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

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

PlatformSpeed

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

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

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

PlatformDirection

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

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

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

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

MountingAngles

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

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

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

SeedSource

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

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

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

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

Seed

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

Задайте 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 из-за различий между центральным процессором и графическим процессором расчетов.

Моделируйте возврат загромождения с местности с значением 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];

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

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

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

seed = 7151;

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

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

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

stream_gpu = parallel.gpu.RandStream('CombRecursive','Seed',seed, ...
    'NormalTransform','Inversion');
parallel.gpu.RandStream.setGlobalStream(stream_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] Бартон, Дэвид. «Land Clutter Models for Radar Design and Analysis», Труды IEEE. Том 73, № 2, февраль 1985, с. 198-204.

[2] Long, Maurice W. Radar Reflectivity of Land and Sea, 3rd Ed. Boston: Artech House, 2001.

[3] Натансон, Фред Э., Дж. Патрик Рейли и Марвин Н. Коэн. Radar Design Principles, 2nd Ed. Mendham, NJ: SciTech Publishing, 1999.

[4] Ward, J. «Space-Time Adaptive Processing for Air Radar Data Systems», Технический отчет 1015, MIT Lincoln Laboratory, декабрь 1994 года.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

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

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