exponenta event banner

шаг

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

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

Синтаксис

step(sIS,data)

Описание

Примечание

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

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

Примечание

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

Входные аргументы

развернуть все

Отображение области интенсивности, указанное как phased.IntensityScope Системный объект.

Пример: phased.IntensityScope

Отображаемые значения интенсивности, заданные как вещественная матрица N-by-M. Количество N определяет количество ячеек интенсивности в data. Величина М определяет количество векторов интенсивности в данных. Каждый столбец матрицы создает строку отображения. Единицы являются произвольными. Укажите временной интервал между векторами интенсивности с помощью 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]);

Настройте три целевые платформы, используя один объект 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 м/с.

Используйте 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]);

Настройка азимутальных угловых бинов

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

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

Функция усиления диапазона

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

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

Настройка средства просмотра областей

XResolution пара имя-значение определяет ширину каждой ячейки строки сканирования. XOffset устанавливает значение бина наименьшего азимутального угла. TimeResolution пара имя-значение определяет разницу во времени между строками сканирования. 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. Вычислить азимутальный угол bins путем квантования значений азимутального угла в целых кратных 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