reflect

Отраженный сигнал от движущегося велосипедиста

Описание

пример

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 м, как ожидалось, учитывая скорость велосипедиста.

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

свернуть все

Велосипедист, заданный как backscatterBicyclist объект.

Инцидентный радар сигнализирует на каждом рассеивателе велосипедиста, заданном как M с комплексным знаком-by-N матрица. M является количеством выборок в сигнале. N является количеством рассеивателей точки на велосипедисте и определяется частично из количества спиц в каждом колесе, N ws. Смотрите Велосипедные индексы Рассеивателя для столбца, представляющего инцидентный сигнал в каждом рассеивателе.

Размер первой размерности входной матрицы может варьироваться, чтобы симулировать изменяющуюся длину сигнала. Изменение размера может произойти, например, в случае импульсного сигнала с переменной импульсной частотой повторения.

Типы данных: double
Поддержка комплексного числа: Да

Направления инцидентных сигналов на рассеивателях велосипедиста, заданных как 2 с действительным знаком N матрицей. N равняется количеству столбцов в X. Каждый столбец Ang задает инцидентное направление сигнала к рассеивателю, принимающему форму пары вертикального изменения азимута, [AzimuthAngle; ElevationAngle]. Модули в градусах. Смотрите Велосипедные индексы Рассеивателя для столбца, представляющего инцидентное направление в каждом рассеивателе.

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

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

свернуть все

Общие отраженные радарные сигналы, возвращенные как 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 возразите или используйте значение по умолчанию.

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

| |

Введенный в R2019b