gpuConstantGammaClutter

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

Описание

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

Модель Earth

Задайте наземную модель, используемую в симуляции помехи в качестве одного из | 'Flat' | 'Curved' |. Когда вы устанавливаете это свойство на 'Flat', земля принята, чтобы быть плоской плоскостью. Когда вы устанавливаете это свойство на 'Curved', земля принята, чтобы быть сферой.

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

ClutterMinRange

Минимальная область значений области помехи (m)

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

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

ClutterMaxRange

Максимальная область значений области помехи (m)

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

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

ClutterAzimuthCenter

Центр азимута области помехи (градус)

Угол азимута в наземной плоскости, о которой сгенерированы закрашенные фигуры помехи. Закрашенные фигуры сгенерированы симметрично об этом угле.

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

ClutterAzimuthSpan

Промежуток азимута помехи исправляет (градус)

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

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

PatchAzimuthSpan

Промежуток азимута помехи исправляет (градус)

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

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

CoherenceTime

Создайте помехи времени когерентности

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

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

PropagationSpeed

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

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

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

SampleRate

Частота дискретизации

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

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

PRF

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

Импульсная частота повторения, PRF в виде скаляра или вектора-строки. Модули находятся в Гц. Импульсный интервал повторения, PRI, является инверсией импульсной частоты повторения, PRF. ThePRF должен удовлетворить этим ограничениям:

  • Продукт 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, метод шага использует набор значений в 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 вектор в форме [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'Объект использует свой собственный частный генератор случайных чисел, чтобы произвести случайные числа. Seed свойство этого объекта задает seed генератора случайных чисел. Используйте 'Property' если вы хотите повторяемые результаты и не используете этот объект с программным обеспечением Parallel Computing Toolbox.

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

Seed

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

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

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

Методы

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

Позвольте изменения значения свойства Системного объекта

Примеры

свернуть все

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

Настройте характеристики радиолокационной системы. Эта система использует универсальную линейную матрицу (ULA) с 4 элементами. Частота дискретизации составляет 1 МГц, и PRF составляет 10 кГц. Скорость распространения является скоростью света, и рабочая частота составляет 300 МГц. Радарная платформа управляет 1 км над землей с путем, параллельным земле вдоль оси массивов. Скорость платформы составляет 2 000 м/с. Основной лепесток имеет угол депрессии 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 дБ. Вы вводите передаваемый сигнал радиолокационной системы при создании помехи. В этом случае вы не задаете эффективную переданную степень сигнала в свойстве.

Настройте характеристики радиолокационной системы. Эта система имеет универсальную линейную матрицу (ULA) с 4 элементами. Частота дискретизации составляет 1 МГц, и PRF составляет 10 кГц. Скорость распространения является скоростью света, и рабочая частота составляет 300 МГц. Радарная платформа управляет 1 км над землей с путем, параллельным земле вдоль оси массивов. Скорость платформы составляет 2 000 м/с. Основной лепесток имеет угол депрессии 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 μs.

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

В большинстве случаев не имеет значения, что графический процессор и центральный процессор используют различные случайные числа. Иногда, вы, возможно, должны воспроизвести тот же поток и на графическом процессоре и на центральном процессоре. В таких случаях можно создать два глобальных потока, таким образом, они производят идентичные случайные числа. И графический процессор и центральный процессор поддерживают объединенное несколько рекурсивный генератор (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();

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

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, 2001.

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

[4] Опека, J. “Пространственно-временная адаптивная обработка для бортовых радарных систем передачи и обработки данных”, технический отчет 1015, MIT Lincoln Laboratory, декабрь 1994.

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

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

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

Введенный в R2021a