plot

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

Описание

пример

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

fhndl = plot(bicyclist) возвращает указатель фигуры окна экрана.

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

Примеры

свернуть все

Вычислите 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 объект.

Постройте оси, заданные как указатель осей.

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

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

свернуть все

Изобразите указатель окна графика.

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

| |

Введенный в R2019b