phased.IntensityScope

Диапазон-интенсивность (RTI) или Допплеровское время-интенсивность (DTI) отображения

Описание

The phased.IntensityScope Системная object™ создает возможности интенсивности для просмотра данных о диапазоне-времени-интенсивности (RTI) или Допплер-времени-интенсивности (DTI). Возможности интенсивности являются прокруткой водопада значений интенсивности как функции времени. Линии скана появляются в нижней части окна отображения и прокручиваются в верхней части. Каждая линия скана представляет интенсивность сигнала как функцию от интересующего параметра, такая как область значений или скорость. Можно также использовать этот объект для отображения данных угловой интенсивности и спектральных данных. Этот рисунок показывает отображение RTI.

Чтобы создать возможности интенсивности:

  1. Определите и настройте phased.IntensityScope Системный объект. В это время можно задать любые свойства системных объектов или оставить их по значениям по умолчанию. См. «Конструкция».

  2. Вызовите step метод добавления линий интенсивности в нижнюю часть отображения в соответствии со свойствами phased.IntensityScope Системный объект. Некоторые свойства настраиваются и могут быть изменены в любое время. Не настраиваемые свойства не могут быть изменены после первого вызова на step. Последующие вызовы step добавить больше линий интенсивности.

Примечание

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

Конструкция

sIS = phased.IntensityScope создает область интенсивности Системный объект, sIS, имеющих значения свойств по умолчанию.

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

Свойства

расширить все

Имя окна возможностей интенсивности, заданное как вектор символов. Name свойство и Title являются различными свойствами. Заголовок появляется в окне отображения, над данными. Имя появляется в строке заголовка окна.

Пример: 'Range Intensity'

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

Выборка X, заданный как положительный действительный скаляр. Эта величина определяет ширину каждого горизонтального интервала линии скана. Эти модули зависят от интерпретации данных. Для примера, если вы создаете отображение RTI, задайте XResolution на 0.5 интерпретируется как 0,5 метра.

Пример: 0.5

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

Смещение оси X, заданное как действительный скаляр. Эта величина устанавливает значение самого нижнего интервала линии скана. Значения всех других интервалов равны этому значению плюс целое число, кратное Xresolution. Эти модули зависят от интерпретации данных. Для примера, если вы создаете отображение RTI, задайте XOffset на 100.0 интерпретируется как 100 метров.

Пример: -0.1

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

X -метка оси, заданная как вектор символов.

Пример: 'Range (km)'

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

Заголовок отображения возможностей интенсивности, заданный как вектор символов. Title свойство и Name являются различными свойствами. Заголовок появляется в окне отображения, над данными. Имя появляется в строке заголовка окна.

Пример: 'Range vs Time'

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

Разрешение времени линии (линий) интенсивности, определенной как положительный скаляр с реальным знаком. Модули - секунды.

Пример: .0001

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

Временной интервал отображения интенсивности, заданный как положительный реальный скаляр. Модули - секунды.

Пример: 5.0

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

Метка модулей интенсивности, отображаемая на панели цветов в виде вектора символов.

Пример: 'Watts'

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

Расположение и размер окна возможностей интенсивности, заданные как вектор 1 на 4, имеющий вид [left bottom width height]. Модули указаны в пикселях.

  • left и bottom укажите расположение нижнего левого угла окна.

  • width и height задайте ширину и высоту окна.

Значение по умолчанию этого свойства зависит от разрешения вашего отображения. Это свойство настраивается.

Пример: [100 100 500 400]

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

Методы

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

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

Примеры

свернуть все

Использование phased.IntensityScope Системный объект? отображение интенсивности эха движущейся цели как функции области значений и времени.

Запустите симуляцию в течение 5 секунд на 0,1 секунде. На отображении каждая горизонтальная линия скана показывает интенсивность радиолокационного эха на каждом временном шаге.

nsteps = 50;
dt = .1;
timespan = nsteps*dt;

Симулируйте цель на дальности 320,0 км и скорости области значений 2,0 км/с. Эхо-сигналы разрешаются в интервалы области значений 1 км разрешения. Интервалы области значений составляют от 50 до 1000 км.

rngres = 1.0;
rngmin = 50.0;
rngmax = 1000.0;
tgtrange = 320.0;
rangerate = 2.0;
rngscan = [rngmin:rngres:rngmax];

Настройте возможности интенсивности с помощью этих свойств.

  • Используйте XResolution свойство, чтобы задать ширину каждого интервала линии скана в разрешении области значений 1 км.

  • Используйте XOffset свойство установить значение интервала наименьшей области значений минимальной области значений 50 км.

  • Используйте TimeResolution свойство, чтобы задать значение различия во времени линии скана равное 0,1 с.

  • Используйте TimeSpan свойство, чтобы задать высоту окна отображения как временную длительность симуляции.

  • Используйте IntensityUnits свойство, чтобы задать отображение модулей равным Watts.

scope = phased.IntensityScope('Name','IntensityScope Display',...
    'Title','Range vs. Time','XLabel','Range (km)',...
    'XResolution',rngres,'XOffset',rngmin,...
    'TimeResolution',dt,'TimeSpan',timespan, ...
    'IntensityUnits','Watts','Position',[100,100,800,450]);

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

for k = 1:nsteps
    bin = floor((tgtrange - rngmin)/rngres) + 1;
    scanline = zeros(size(rngscan));
    scanline(bin+[-1:1]) = 1;
    scope(scanline.');
    tgtrange = tgtrange + dt*rangerate;
    pause(.1);
end

Используйте phased.IntensityScope Системный объект? отображение интенсивности эхо-сигналов трех движущихся целей как функций области значений и времени.

Создайте радар и Системные объекты цели

Настройте начальные положения и скорости трех целей. Используйте phased.Platform Системный объект? для моделирования движений радара и цели. Радар является стационарным, в то время как цели подвергаются постоянному движению скорости. Симуляция выполняется в течение 500 шагов с шагом 0,1 секунды, что дает общее время симуляции 50 секунд.

nsteps = 500;
dt = .1;
timespan = nsteps*dt;
x1 = [60,0,0]';
x2 = [60,-80,40]';
x3 = [300,0,-300]';
v1 = [2,0,0]';
v2 = [10,5,6]';
v3 = [-10,2,-4]';
platform = phased.Platform([0,0,0]',[0,0,0]');
targets = phased.Platform([x1,x2,x3],[v1,v2,v3]);

Настройка интервалов диапазона

Каждый эхо-сигнал помещается в интервал областей значений. Разрешение области значений составляет 1 метр, и область значений составляет от 50 до 1000 метров.

rngres = 1.0;
rngmin = 50.0;
rngmax = 1000.0;
rngscan = [rngmin:rngres:rngmax];

Создайте функцию усиления

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

rangegain = @(rng)(1e12*rng^4);

Создайте возможности интенсивности

Настройте возможности интенсивности с помощью этих свойств.

  • Используйте XResolution свойство, чтобы задать ширину каждого интервала линии скана в разрешении области значений 1 км.

  • Используйте XOffset свойство установить значение интервала наименьшей области значений минимальной области значений 50 км.

  • Используйте TimeResolution свойство, чтобы задать значение различия во времени линии скана равное 0,1 с.

  • Используйте TimeSpan свойство, чтобы задать высоту окна отображения как временную длительность симуляции.

  • Используйте IntensityUnits свойство, чтобы задать отображение модулей равным Watts.

scope = phased.IntensityScope('Name','IntensityScope Display',...
    'Title','Ranges vs. Time','XLabel','Range (m)','XResolution',rngres,...
    'XOffset',rngmin,'TimeResolution',dt,'TimeSpan',timespan, ...
    'IntensityUnits','Watts','Position',[100,100,800,450]);

Запуск цикла симуляции

  1. В этом цикле перемещайте цели с постоянной скоростью, используя step метод phased.Platform Системный объект.

  2. Вычислите целевые области значений с помощью rangeangle функция.

  3. Вычислите целевые интервалы области значений путем квантования значений области значений в целочисленных множителях rangres.

  4. Заполните каждый интервал целевой области значений и соседние интервалы моделируемым значением интенсивности радара.

  5. Добавьте сигнал от каждой цели к линии скана.

  6. Вызовите step метод phased.IntensityScope Системный объект для отображения линий скана.

for k = 1:nsteps
    xradar = platform(dt);
    xtgts = targets(dt);
    [rngs] = rangeangle(xtgts,xradar);
    scanline = zeros(size(rngscan));

    rngindx = ceil((rngs(1) - rngmin)/rngres);
    scanline(rngindx + [-1:1]) = rangegain(rngs(1))/(rngs(1)^4);

    rngindx = ceil((rngs(2) - rngmin)/rngres);
    scanline(rngindx + [-1:1]) = rangegain(rngs(2))/(rngs(2)^4);

    rngindx = ceil((rngs(3) - rngmin)/rngres);
    scanline(rngindx + [-1:1]) = rangegain(rngs(3))/(rngs(3)^4);

    scope(scanline.');
    pause(.1);
end

Используйте phased.IntensityScope System Object(TM) для отображения выхода обнаружения симуляции радиолокационной системы. Радиолокационный сценарий содержит стационарный одноэлементный моностатический радар и три движущиеся цели.

Установите рабочие параметры радара

Установите максимальную область значений, разрешение степени области значений пика, рабочую частоту, коэффициент усиления передатчика и поперечное сечение радара-цели.

max_range = 5000;
range_res = 50;
fc = 10e9;
tx_gain = 20;
peak_power = 5500.0;

Выберите скорость распространения сигнала, чтобы быть скоростью света, и вычислите длину волны сигнала, соответствующую рабочей частоте.

c = physconst('LightSpeed');
lambda = c/fc;

Вычислите ширину полосы пропускания импульса из разрешения области значений. Установите частоту дискретизации, fs, в два раза больше ширины полосы пропускания импульса. Шумовая полоса также устанавливается на ширину полосы пропускания импульса. Радар интегрирует ряд импульсов, установленных num_pulse_int. Длительность каждого импульса является обратной шириной полосы пропускания импульса.

pulse_bw = c/(2*range_res);
pulse_length = 1/pulse_bw;
fs = 2*pulse_bw;
noise_bw = pulse_bw;
num_pulse_int = 10;

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

prf = c/(2*max_range);

Создайте системные объекты для модели

Выберите прямоугольную форму волны.

waveform = phased.RectangularWaveform('PulseWidth',pulse_length,...
    'PRF',prf,'SampleRate',fs);

Установите характеристики усилителя приемника.

amplifier = phased.ReceiverPreamp('Gain',20,'NoiseFigure',0,...
    'SampleRate',fs,'EnableInputPort',true,'SeedSource','Property',...
    'Seed',2007);
transmitter = phased.Transmitter('Gain',tx_gain,'PeakPower',peak_power,...
    'InUseOutputPort',true);

Задайте радиолокационную антенну как одну изотропную антенну.

antenna = phased.IsotropicAntennaElement('FrequencyRange',[5e9 15e9]);

Настройте моностатическую радиолокационную платформу.

radarplatform = phased.Platform('InitialPosition',[0; 0; 0],...
    'Velocity',[0; 0; 0]);

Настройте три целевые платформы с помощью одного системного объекта.

targetplatforms = phased.Platform(...
    'InitialPosition',[2000.66 3532.63 3845.04; 0 0 0; 0 0 0], ...
    'Velocity',[150 -150 0; 0 0 0; 0 0 0]);

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

radiator = phased.Radiator('Sensor',antenna,'OperatingFrequency',fc);
collector = phased.Collector('Sensor',antenna,'OperatingFrequency',fc);

Настройте три целевых свойства RCS.

targets = phased.RadarTarget('MeanRCS',[1.6 2.2 1.05],'OperatingFrequency',fc);

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

channels= phased.FreeSpace('SampleRate',fs,'TwoWayPropagation',true,...
    'OperatingFrequency',fc);

Задайте согласованный фильтр.

MFcoef = getMatchedFilter(waveform);
filter = phased.MatchedFilter('Coefficients',MFcoef,'GainOutputPort',true);

Создайте области значений и допплеровские интервалы

Настройка быстродействующей сетки. Быстрое время - это время дискретизации эхо-импульса относительно времени передачи импульса. Интервалы области значений являются областями значений, соответствующими каждому интервалу быстрой временной сетки.

fast_time = unigrid(0,1/fs,1/prf,'[)');
range_bins = c*fast_time/2;

Чтобы компенсировать потери области значений, создайте изменяющийся во времени коэффициент усиления Системный объект?.

gain = phased.TimeVaryingGain('RangeLoss',2*fspl(range_bins,lambda),...
    'ReferenceLoss',2*fspl(max_range,lambda));

Установите доплеровские интервалы. Доплеровские интервалы определяются частотой повторения импульсов. Создайте объект FFT System для Доплеровской обработки.

DopplerFFTbins = 32;
DopplerRes = prf/DopplerFFTbins;
fft = dsp.FFT('FFTLengthSource','Property',...
    'FFTLength',DopplerFFTbins);

Создайте кубик данных

Настройте уменьшенный кубик данных. Обычно кубик данных имеет быстрые и медленные размерности и количество датчиков. Поскольку кубик данных имеет только один датчик, он двумерный.

rx_pulses = zeros(numel(fast_time),num_pulse_int);

Создайте системные объекты IntensityScope

Создайте два IntensityScope Системные объекты, один для Доплеровской интенсивности времени и другой для диапазонной интенсивности времени.

dtiscope = phased.IntensityScope('Name','Doppler-Time Display',...
    'XLabel','Velocity (m/sec)', ...
    'XResolution',dop2speed(DopplerRes,c/fc)/2, ...
    'XOffset',dop2speed(-prf/2,c/fc)/2,...
    'TimeResolution',0.05,'TimeSpan',5,'IntensityUnits','Mag');
rtiscope = phased.IntensityScope('Name','Range-Time Display',...
    'XLabel','Range (m)', ...
    'XResolution',c/(2*fs), ...
    'TimeResolution',0.05,'TimeSpan',5,'IntensityUnits','Mag');

Запуск цикла симуляции по нескольким радиолокационным передачам

Передайте 2000 импульсов. Когерентно обрабатывайте группы по 10 импульсов за раз.

Для каждого импульса:

  1. Обновите положение и скорость радара radarplatform

  2. Обновите целевые положения и скорости targetplatforms

  3. Создайте импульсы одноволнового train, которая будет передана transmitter

  4. Вычислите области значений и углы целей относительно радара

  5. Излучайте сигналы к целям radiator

  6. Распространите импульсы на цель и назад channels

  7. Отражайте сигналы от целевой targets

  8. Прием сигнала sCollector

  9. Усильте принятый сигнал amplifier

  10. Кубик данных формы

Для каждого набора из 10 импульсов в кубе данных:

  1. Соответствие фильтрации каждой строки (быстрая размерность) куба данных.

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

pri = 1/prf;
nsteps = 200;
for k = 1:nsteps
    for m = 1:num_pulse_int
        [ant_pos,ant_vel] = radarplatform(pri);
        [tgt_pos,tgt_vel] = targetplatforms(pri);
        sig = waveform();
        [s,tx_status] = transmitter(sig);
        [~,tgt_ang] = rangeangle(tgt_pos,ant_pos);
        tsig = radiator(s,tgt_ang);
        tsig = channels(tsig,ant_pos,tgt_pos,ant_vel,tgt_vel);
        rsig = targets(tsig);
        rsig = collector(rsig,tgt_ang);
        rx_pulses(:,m) = amplifier(rsig,~(tx_status>0));
    end

    rx_pulses = filter(rx_pulses);
    MFdelay = size(MFcoef,1) - 1;
    rx_pulses = buffer(rx_pulses((MFdelay + 1):end), size(rx_pulses,1));
    rx_pulses = gain(rx_pulses);
    range = pulsint(rx_pulses,'noncoherent');
    rtiscope(range);
    dshift = fft(rx_pulses.');
    dshift = fftshift(abs(dshift),1);
    dtiscope(mean(dshift,2));
    radarplatform(.05);
    targetplatforms(.05);
end

Все цели лежат на оси X. Две цели движутся по оси X, одна - стационарная. Поскольку радар находится в источнике, можно считать скорость цели непосредственно из окна Doppler-Time Display. Значения согласуются с заданными скоростями -150, 150 и 0 м/сек.

Введенный в R2016a