Разовая интенсивность области значений (RTI) или отображение Доплеровской разовой интенсивности (DTI)
phased.IntensityScope
Система object™ создает осциллограф интенсивности для просмотра данные о Доплеровской разовой интенсивности (DTI) или разовая интенсивность области значений (RTI). Осциллограф интенсивности является водопадом прокрутки значений интенсивности как функция времени. Строки развертки появляются в нижней части окна экрана и прокрутки прочь наверху. Каждая строка развертки представляет интенсивность сигнала как функцию параметра интереса, такого как область значений или скорость. Можно также использовать этот объект отобразить данные угловой разовой интенсивности и спектральные данные. Этот рисунок показывает отображение RTI.
Создать осциллограф интенсивности:
Задайте и настройте phased.IntensityScope
Системный объект. Можно установить любые свойства Системного объекта в это время, или можно оставить их в их значениях по умолчанию. Смотрите Конструкцию.
Вызовите step
метод, чтобы добавить линии интенсивности на нижнюю часть отображения согласно свойствам phased.IntensityScope
Системный объект. Некоторые свойства являются настраиваемыми и могут быть изменены в любое время. Ненастраиваемые свойства не могут быть изменены после первого вызова step
. Последующие вызовы step
добавьте больше линий интенсивности.
Запуск в R2016b, вместо того, чтобы использовать step
метод, чтобы выполнить операцию, заданную Системным объектом, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x)
и y = obj(x)
выполните эквивалентные операции.
создает Системный объект осциллографа интенсивности, sIS
= phased.IntensityScopesIS
, наличие значений свойств по умолчанию.
возвращается интенсивность определяют объем Системного объекта, sIS
= phased.IntensityScope(Name,Value)sIS
, с каждым заданным свойством Name
установите на заданный Value
Имя
должен появиться в одинарных кавычках (''
). Можно задать несколько аргументов пары "имя-значение" в любом порядке как Name1,Value1,...,NameN,ValueN
.
Name
— Имя окна'Intensity Scope'
(значение по умолчанию) | вектор символовИмя окна scope интенсивности, заданное как вектор символов. Name
свойство и Title
различные свойства. Заголовок появляется в окне экрана выше данных. Имя появляется в строке заголовка окна.
Пример: 'Range Intensity'
Типы данных: char
XResolution
— демонстрационный интервал оси X-
(значение по умолчанию) | положительный скаляр с действительным знакомДемонстрационный интервал оси X, заданный как положительный скаляр с действительным знаком. Это количество определяет ширину каждого горизонтального интервала строки развертки. Модули зависят от интерпретации данных. Например, если вы создаете отображение RTI, затем установка XResolution
к 0.5
интерпретирован как 0,5 метра.
Пример: 0.5
Типы данных: double
XOffset
— X - ось возмещена
(значение по умолчанию) | скаляр с действительным знакомСмещение оси X, заданное как скаляр с действительным знаком. Это количество устанавливает значение самого низкого интервала строки развертки. Значения всех других интервалов равны этому значению плюс целочисленное кратное Xresolution
. Модули зависят от интерпретации данных. Например, если вы создаете отображение RTI, затем установка XOffset
к 100.0
интерпретирован как 100 метров.
Пример: -0.1
Типы данных: double
Xlabel
— Метка оси X''
(значение по умолчанию) | вектор символовX-, заданная как вектор символов.
Пример: 'Range (km)'
Типы данных: char
Title
— Заголовок отображения''
(значение по умолчанию) | вектор символовЗаголовок интенсивности определяет объем отображения, заданного как вектор символов. Title
свойство и Name
различные свойства. Заголовок появляется в окне экрана выше данных. Имя появляется в строке заголовка окна.
Пример: 'Range vs Time'
Типы данных: char
TimeResolution
— Разрешение времени
(значение по умолчанию) | положительный скаляр с действительным знакомРазрешение времени линии (линий) интенсивности, заданной как положительный скаляр с действительным знаком. Модули являются секундами.
Пример: .0001
Типы данных: double
TimeSpan
— Отрезок времени окна экранаОтрезок времени отображения интенсивности, заданного как положительный скаляр с действительным знаком. Модули являются секундами.
Пример: 5.0
Типы данных: double
IntensityUnits
— Метка единиц интенсивности'dB'
(значение по умолчанию) | вектор символовМетка единиц интенсивности отображена в цветной полосе, заданной как вектор символов.
Пример: 'Watts'
Типы данных: char
Position
— Местоположение и размер окна scope интенсивностиМестоположение и размер окна scope интенсивности, заданного как вектор 1 на 4, имеющий форму [left bottom width height]
. Модули находятся в пикселях.
left
и bottom
задайте местоположение нижнего левого угла окна.
width
и height
задайте ширину и высоту окна.
Значение по умолчанию этого свойства зависит от разрешения вашего отображения. Это свойство является настраиваемым.
Пример: [100 100 500 400]
Типы данных: double
скрыться | Скройте окно scope интенсивности |
сброс | Сбросьте состояние Системного объекта осциллографа интенсивности |
show | Покажите окно scope интенсивности |
шаг | Обновите отображение осциллографа интенсивности |
Характерный для всех системных объектов | |
---|---|
release | Позвольте изменения значения свойства Системного объекта |
Используйте phased.IntensityScope
Системный объект? отобразить интенсивность эха движущейся цели как функция области значений и время.
Запустите симуляцию в течение 5 секунд на 0,1 вторых шагах. В отображении каждая горизонтальная строка развертки показывает интенсивность радарного эха на каждом временном шаге.
nsteps = 50; dt = .1; timespan = nsteps*dt;
Симулируйте цель в области значений 320,0 км и уровне области значений 2,0 км/с. Эхо разрешено в интервалы области значений 1-километрового разрешения. Интервалы диапазона охватывают от 50 до 1 000 км.
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 до 1 000 метров.
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]);
Запустите цикл симуляции
В этом цикле переместите цели в постоянную скорость с помощью step
метод phased.Platform
Системный объект.
Вычислите целевые диапазоны с помощью rangeangle
функция.
Вычислите интервалы целевого диапазона путем квантования значений области значений в целочисленных множителях rangres
.
Заполните каждый интервал целевого диапазона и соседние интервалы с симулированным радарным значением интенсивности.
Добавьте сигнал от каждой цели до строки развертки.
Вызовите 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
Системный объект? отобразить обнаружение выход полной симуляции радиолокационной системы. Радарный сценарий содержит стационарный одноэлементный моностатический радар и три движущихся цели.
Примечание: Этот пример запускается только в R2016b или позже. Если вы используете более ранний релиз, заменяете каждый вызов функции с эквивалентным step
синтаксис. Например, замените myObject(x)
с step(myObject,x)
.
Установите радарные рабочие параметры
Установите вероятность обнаружения, вероятность ложного предупреждения, максимальной области значений, разрешения области значений, рабочей частоты, усиления передатчика, и предназначайтесь для радарного поперечного сечения.
pd = 0.9; pfa = 1e-6; max_range = 5000; range_res = 50; fc = 10e9; tx_gain = 20; tgt_rcs = 1;
Выберите скорость распространения сигнала, чтобы быть скоростью света и вычислить длину волны сигнала, соответствующую рабочей частоте.
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);
Вычислите степень передачи
Используйте уравнение Albersheim, чтобы вычислить ОСШ, требуемый встретить желаемой вероятности обнаружения и вероятности ложного предупреждения. Затем используйте основное уравнение радиолокации, чтобы вычислить степень, должен был достигнуть необходимого ОСШ.
snr_min = albersheim(pd, pfa, num_pulse_int); peak_power = radareqpow(lambda,max_range,snr_min,pulse_length,... 'RCS',tgt_rcs,'Gain',tx_gain);
Создание системных объектов для модели
Выберите прямоугольную форму волны.
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));
Настройте Доплеровские интервалы. Доплеровские интервалы определяются импульсной частотой повторения. Создайте Системный объект БПФ для Доплера, обрабатывающего.
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');
Запустите цикл симуляции по нескольким радарным передачам
Передайте 2 000 импульсов. Когерентно группы процесса из 10 импульсов за один раз.
Для каждого импульса:
Обновите радарное положение и скорость radarplatform
Обновите целевые положения и скорости targetplatforms
Создайте импульсы одной волны, обучаются, чтобы быть переданным transmitter
Вычислите области значений и углы целей относительно радара
Излучите сигналы к целям radiator
Распространите импульсы к цели и спине channels
Отразите сигналы от целевого targets
Получите sCollector
сигнала
Усильте полученный amplifier
сигнала
Сформируйте куб данных
Для каждого набора 10 импульсов в кубе данных:
Фильтр соответствия каждая строка (быстро-разовая размерность) куба данных.
Вычислите эффекты Доплера для каждой строки (медленно-разовая размерность) куба данных.
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, и каждый является стационарным. Поскольку радар в начале координат, можно считать целевую скорость непосредственно из разового Доплером Окна экрана. Значения соглашаются с заданными скоростями-150, 150, и 0 м/секунда.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.