Отраженный сигнал от движущегося велосипедиста
возвращает общий отраженный сигнал, Y
= reflect(bicyclist
,X
,ang
)Y
, от велосипедиста. Общий отраженный сигнал является суммой всех отраженных сигналов от рассеивателей велосипедиста. X
представляет инцидентные сигналы в каждом рассеивателе. ang
задает направления инцидента и отраженных сигналов относительно каждого рассеиватели.
Отраженная сила сигнала зависит от значения радарного поперечного сечения под инцидентным углом. Эта упрощенная модель использует то же значение во всех рассеивателях.
Вычислите backscattered радарный сигнал от велосипедиста, проходящего ось X в на расстоянии в 5 м/с от радара. Примите, что радар расположен в начале координат. Радар передает сигнал LFM на уровне 24 ГГц с пропускной способностью на 300 МГц. Сигнал отражается в данный момент, велосипедист начинает перемещаться и затем одну секунду спустя.
Инициализируйте велосипедиста, форму волны и объекты канала распространения
Инициализируйте backscatterBicyclist
, phased.LinearFMWaveform
, и phased.FreeSpace
объекты. Примите частоту дискретизации на 300 МГц. Исходное положение велосипедиста находится на оси X в 30 метрах от радара.
bw = 300e6; fs = bw; fc = 24e9; radarpos = [0;0;0]; bpos = [30;0;0]; bicyclist = backscatterBicyclist( ... 'OperatingFrequency',fc,'NumWheelSpokes',15, ... 'InitialPosition',bpos,'Speed',5.0, ... 'InitialHeading',0.0); lfmwav = phased.LinearFMWaveform( ... 'SampleRate',fs, ... 'SweepBandwidth',bw); sig = lfmwav(); chan = phased.FreeSpace(... 'OperatingFrequency',fc,... 'SampleRate',fs,... 'TwoWayPropagation',true);
Постройте начальное положение велосипедиста
Используя move
возразите функции, получите начальные положения рассеивателя, скорости и ориентацию велосипедиста. Постройте исходное положение велосипедиста. dt
аргумент move
объектная функция решает что следующий вызов move
возвращает состояние велосипедиста движения dt
несколько секунд спустя.
dt = 1.0; [bpos,bvel,bax] = move(bicyclist,dt,0); plot(bicyclist)
Получите сначала отраженный сигнал
Распространите сигнал ко всем рассеивателям и получите отраженное совокупное, возвращают сигнал.
N = getNumScatterers(bicyclist); sigtrns = chan(repmat(sig,1,N),radarpos,bpos,[0;0;0],bvel); [rngs,ang] = rangeangle(radarpos,bpos,bax); y0 = reflect(bicyclist,sigtrns,ang);
Постройте положение велосипедиста после обновления положения
После того, как велосипедист переместил, получает положения рассеивателя и скорости и затем перемещает велосипед вдоль его траектории в течение другой секунды.
[bpos,bvel,bax] = move(bicyclist,dt,0); plot(bicyclist)
Получите второй отраженный сигнал
Распространите сигнал ко всем рассеивателям в их новых положениях и получите отраженное совокупное, возвращают сигнал.
sigtrns = chan(repmat(sig,1,N),radarpos,bpos,[0;0;0],bvel); [~,ang] = rangeangle(radarpos,bpos,bax); y1 = reflect(bicyclist,sigtrns,ang);
Совпадайте с фильтром отраженные сигналы
Фильтр соответствия отраженные сигналы и строит их вместе.
mfsig = getMatchedFilter(lfmwav); nsamp = length(mfsig); mf = phased.MatchedFilter('Coefficients',mfsig); ymf = mf([y0 y1]); fdelay = (nsamp-1)/fs; t = (0:size(ymf,1)-1)/fs - fdelay; c = physconst('LightSpeed'); plot(c*t/2,mag2db(abs(ymf))) ylim([-200 -50]) xlabel('Range (m)') ylabel('Magnitude (dB)') ax = axis; axis([0,100,ax(3),ax(4)]) grid legend('First pulse','Second pulse')
Вычислите различие в области значений между максимумами этих двух импульсов.
[maxy,idx] = max(abs(ymf)); dpeaks = t(1,idx(2)) - t(1,idx(1)); drng = c*dpeaks/2
drng = 4.9965
Различие в области значений составляет 5 м, как ожидалось, учитывая скорость велосипедиста.
bicyclist
— Цель велосипедистаbackscatterBicyclist
объектВелосипедист, заданный как backscatterBicyclist
объект.
X
— Инцидентные радарные сигналыИнцидентный радар сигнализирует на каждом рассеивателе велосипедиста, заданном как M с комплексным знаком-by-N матрица. M является количеством выборок в сигнале. N является количеством рассеивателей точки на велосипедисте и определяется частично из количества спиц в каждом колесе, N ws. Смотрите Велосипедные индексы Рассеивателя для столбца, представляющего инцидентный сигнал в каждом рассеивателе.
Размер первой размерности входной матрицы может варьироваться, чтобы симулировать изменяющуюся длину сигнала. Изменение размера может произойти, например, в случае импульсного сигнала с переменной импульсной частотой повторения.
Типы данных: double
Поддержка комплексного числа: Да
ang
— Направления инцидентных сигналовНаправления инцидентных сигналов на рассеивателях велосипедиста, заданных как 2 с действительным знаком N матрицей. N равняется количеству столбцов в X
. Каждый столбец Ang
задает инцидентное направление сигнала к рассеивателю, принимающему форму пары вертикального изменения азимута, [AzimuthAngle; ElevationAngle]. Модули в градусах. Смотрите Велосипедные индексы Рассеивателя для столбца, представляющего инцидентное направление в каждом рассеивателе.
Типы данных: double
Y
— Общие отраженные радарные сигналыОбщие отраженные радарные сигналы, возвращенные как M с комплексным знаком-by-1 вектор-столбец. M равняется количеству выборок во входном сигнале, X
.
Типы данных: double
Поддержка комплексного числа: Да
Индексы рассеивателя велосипедиста задают, какие столбцы в матрицах положения или скорости рассеивателя содержат данные о положении и скорости для определенного рассеивателя. Например, столбец 92 bpos
задает 3-D положение одного из рассеивателей на педали.
Рассеиватели колеса одинаково разделены между колесами. Можно определить общее количество рассеивателей колеса, N, путем вычитания 113 от выхода getNumScatterers
функция. Количеством рассеивателей на колесо является N, коротковолновый = N/2.
Индексы рассеивателя велосипедиста
Компонент велосипедиста | Индекс рассеивателя велосипедиста |
---|---|
Система координат и наездник | 1 … 90 |
Педали | 91 … 99 |
Участки наездника | 100 … 113 |
Переднее колесо | 114 … 114 + коротковолновый N - 1 |
Заднее колесо | 114 + N коротковолновый … 114 + N - 1 |
Значение радарного поперечного сечения (RCS) рассеивателя обычно зависит от инцидентного угла отраженного излучения. backscatterBicyclist
возразите использует упрощенную модель RCS: шаблон RCS отдельного рассеивателя равняется общему шаблону велосипедиста, разделенному на количество рассеивателей. Значение RCS вычисляется из шаблона RCS, оцененного в среднем значении по всем рассеивателям азимута и углов инцидента вертикального изменения. Поэтому значение RCS является тем же самым для всех рассеивателей. Можно задать шаблон RCS с помощью RCSPattern
свойство backscatterBicyclist
возразите или используйте значение по умолчанию.
getNumScatterers
| move
| plot
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.