step

Системный объект: фазированный. IntensityScope
Пакет: поэтапный

Обновление отображения возможностей интенсивности

Синтаксис

step(sIS,data)

Описание

Примечание

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

step(sIS,data) обновляет отображение возможностей интенсивности новыми линиями скана от реального сигнала, data.

Примечание

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

Входные параметры

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

Возможности интенсивности, заданное как phased.IntensityScope Системный объект.

Пример: phased.IntensityScope

Отображенные значения интенсивности, заданные как матрица N -by M. N количества определяет количество интервалов интенсивности в data. Количество векторов интенсивности в M задается в данных. Каждый столбец матрицы создает отображение линии. Модули произвольные. Задайте временной интервал между векторами интенсивности, используя TimeResolution свойство.

Пример: [5.0;5.1;5.0;4.9]

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

Примеры

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

Используйте 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 м/сек.

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

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

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

nsteps = 200;
dt = 0.5;
timespan = nsteps*dt;
x1 = [60,0,0]';
x2 = [60,-80,40]';
x3 = [300,0,-300]';
x3 = [-300,0,-300]';

v1 = [2,0,0]';
v2 = [10,5,6]';
v3 = [-10,2,-4]';
radarplatform = phased.Platform([0,0,0]',[0,0,0]');
targets = phased.Platform([x1,x2,x3],[v1,v2,v3]);

Настройка интервалов Угла Azimuth

Сигнал для каждого эхо-сигнала помещается в угол интервала и два смежных интервалов. Разрешение интервала составляет 1 степень, а угол наклона составляет от -180 до 180 степени.

angres = 1.0;
angmin = -180.0;
angmax = 180.0;
angscan = [angmin:angres:angmax];
na = length(angscan);

Функция усиления области значений

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

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

Настройка Средство Просмотра

The XResolution Пара "имя-значение" задает ширину каждого интервала скана линии. The XOffset устанавливает значение самого низкого интервала угла азимута. The TimeResolution Пара "имя-значение" задает время различия между сканом строками. The TimeSpan Пара "имя-значение" устанавливает высоту окна отображения. Создается скан линии с каждым вызовом step способ. Модулями интенсивности являются модули.

scope = phased.IntensityScope( ...
    'Name','IntensityScope Display',...
    'Title','Azimuth vs. Time',...
    'XLabel','Azimuth (deg)', ...
    'XResolution',angres,'XOffset',angmin,...
    'TimeResolution',dt,'TimeSpan',timespan, ...
    'IntensityUnits','Watts',...
    'Position',[100,100,800,450]);

Цикл обновления-отображения

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

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

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

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

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

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

    angindx = ceil((angs(1,1) - angmin)/angres) + 1;
    idx = angindx + [-1:1];
    idx(idx>na)=[];
    idx(idx<1)=[];
    scanline(idx) = rangegain(rngs(1))/(rngs(1)^4);

    angindx = ceil((angs(1,2) - angmin)/angres) + 1;
    idx = angindx + [-1:1];
    idx(idx>na)=[];
    idx(idx<1)=[];
    scanline(idx) = rangegain(rngs(2))/(rngs(2)^4);

    angindx = ceil((angs(1,3) - angmin)/angres) + 1;
    idx = angindx + [-1:1];
    idx(idx>na)=[];
    idx(idx<1)=[];
    scanline(idx) = rangegain(rngs(3))/(rngs(3)^4);
    scope(scanline.');
    pause(.1);
end

Введенный в R2016a