exponenta event banner

график

Отображение местоположения рассеивателей на велосипеде

Описание

пример

plot(bicyclist) отображает положения всех рассеивателей на bicyclist в текущее время. Для отображения текущего положения велосипедиста вызовите plot после вызова функции объекта move объектная функция. Запрос plot перед любым вызовом move отображает велосипедист в начале координат.

fhndl = plot(bicyclist) возвращает дескриптор фигуры окна отображения.

fhndl = plot(bicyclist,'Parent',ax) также задает оси графика для графика велосипеда.

Примеры

свернуть все

Вычислите сигнал РЛС обратного рассеяния от велосипедиста, движущегося по оси Х на расстоянии 5 м/с от РЛС. Предположим, что радар расположен в начале координат. Радар передает сигнал LFM на частоте 24 ГГц с шириной полосы 300 МГц. Сигнал отражается в момент, когда велосипедист начинает движение, а затем на секунду позже.

Инициализация объектов Bicyclist, Waveform и канала распространения

Инициализируйте 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)

Figure Bicyclist Trajectory contains an axes. The axes with title Bicyclist Trajectory contains an object of type line.

Получение первого отраженного сигнала

Распространить сигнал на все рассеиватели и получить суммарный отраженный обратный сигнал.

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)

Figure Bicyclist Trajectory contains an axes. The axes with title Bicyclist Trajectory contains an object of type line.

Получение второго отраженного сигнала

Распространить сигнал на все рассеиватели в их новых положениях и получить суммарный отраженный обратный сигнал.

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

Figure Bicyclist Trajectory contains an axes. The axes contains 2 objects of type line. These objects represent 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 объект.

Печать осей, заданных как маркер перемещения осей.

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

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

свернуть все

Рисунок ручки окна графика.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| |

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