exponenta event banner

поэтапный. IntensityScope

Индикатор дальности-временной интенсивности (RTI) или доплеровской-временной интенсивности (DTI)

Описание

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

Чтобы создать область интенсивности, выполните следующие действия.

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

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

Примечание

Начиная с R2016b, вместо использования step для выполнения операции, определенной объектом System, можно вызвать объект с аргументами, как если бы это была функция. Например, 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]);

Настройте три целевые платформы, используя один объект System.

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);

Создание объекта System для моделирования двустороннего распространения свободного пространства.

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));

Настройте бункеры Доплера. Доплеровские ячейки определяются частотой повторения импульсов. Создайте объект системы БПФ для доплеровской обработки.

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

Создать куб данных

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

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

Создание системных объектов Scope

Создать два 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. Создайте импульсы передаваемой одноволновой линии 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. Две мишени движутся вдоль оси Х, а одна неподвижна. Поскольку радар находится в начале координат, скорость цели можно считывать непосредственно из окна Doppler-Time Display. Значения соответствуют указанным скоростям -150, 150 и 0 м/с.

Представлен в R2016a