move

Положение, скорость и ориентация движущегося велосипедиста

Описание

пример

[bpos,bvel,bax] = move(bicyclist,T,angh) возвращает текущие положения, bpos, и текущие скорости, bvel, из рассеивателей и текущих осей ориентации, bax, из велосипедиста. Положения, скорости и оси затем обновляются для следующего временного интервала T. angh задает направляющийся угол велосипедиста.

[bpos,bvel,bax] = move(bicyclist,T,angh,speed) также задает speed из велосипедиста.

[bpos,bvel,bax] = move(bicyclist,T,angh,speed,coast) также задает курсирующее состояние, coast, из велосипедиста.

Примеры

свернуть все

Постройте положения всех рассеивателей велосипедиста. Примите, что существует 15 спиц на колесо.

Создайте backscatterBicyclist объект для радиолокационной системы, действующей на уровне 77 ГГц и имеющей пропускную способность 300 МГц. Уровень выборки является дважды пропускной способностью. Велосипедист initally на расстоянии в 5 метров от радара.

bw = 300e6;
fs = 2*bw;
fc = 77e9;
rpos = [0;0;0];
bpos = [5;0;0];
bicyclist = backscatterBicyclist( ...
    'OperatingFrequency',fc,'NumWheelSpokes',15, ...
    'InitialPosition',bpos);

Получите исходное положение рассеивателей и усовершенствуйте движение на 1 секунду.

[bpos,bvel,bax] = move(bicyclist,1,0);

Получите количество рассеивателей и индексы рассеивателей колеса.

N = getNumScatterers(bicyclist);
Nsw = (N-114+1)/2;
idxfrontwheel = (114:(114 + Nsw - 1));
idxrearwheel = (114 + Nsw):N;

Постройте местоположения рассеивателей.

plot3(bpos(1,1:90),bpos(2,1:90),bpos(3,1:90), ...
    'LineStyle','none','Color',[0.5,0,0],'Marker','.')
axis equal
hold on
plot3(bpos(1,91:99),bpos(2,91:99),bpos(3,91:99), ...
    'LineStyle','none','Color',[0,0,0.7],'Marker','.')
plot3(bpos(1,100:113),bpos(2,100:113),bpos(3,100:113), ...
    'LineStyle','none','Color',[0,0,0],'Marker','.')
plot3(bpos(1,idxfrontwheel),bpos(2,idxfrontwheel),bpos(3,idxfrontwheel), ...
    'LineStyle','none','Color',[0,0.5,0],'Marker','.')
plot3(bpos(1,idxrearwheel),bpos(2,idxrearwheel),bpos(3,idxrearwheel), ...
    'LineStyle','none','Color',[0.5,0.5,0.5],'Marker','.')
hold off
legend('Frame and rider','Pedals','Rider legs','Front wheel','Rear wheel')

Отобразите анимацию велосипедиста, едущего в кругу четверти. Используйте значения свойств по умолчанию backscatterBicyclist объект. Движение обновляется в 30 интервалах миллисекунды для 500 шагов.

dt = 0.03;
M = 500;
angstep = 90/M;
bicycle = backscatterBicyclist;

for m = 1:M
    [bpos,bvel,bang] = move(bicycle,dt,angstep*m);
    plot(bicycle)
end

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

свернуть все

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

Длительность следующего интервала движения, заданного как положительная скалярная величина. Положения рассеивателя и скорости и ориентация велосипедиста обновляются по этой длительности времени. Модули находятся в секундах.

Пример: 0.75

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

Заголовок велосипедиста, заданного как скаляр. Заголовок измеряется в xy - плоскости от x - оси к y - ось. Модули в градусах.

Пример: -34

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

Скорость велосипедиста, заданная как неотрицательный скаляр. Модель движения ограничивает скорость 60 м/с. Модули исчисляются в метрах в секунду. В качестве альтернативы можно задать скорость велосипедиста с помощью Speed свойство backscatterBicyclist объект.

Пример 8

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

Установите велосипедиста, курсирующего состояние, заданное как false или true. Если установлено в true, велосипедист не ездит на велосипеде, но колеса все еще вращаются (свободный ход). Если установлено в false, велосипедист ездит на велосипеде, и GearTransmissionRatio определяет отношение вращений колеса к вращениям педали. В качестве альтернативы можно задать велосипедиста, курсирующего состояние с помощью Coast свойство backscatterBicyclist объект.

Типы данных: логический

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

свернуть все

Положения рассеивателей велосипедиста, возвращенных как 3 с действительным знаком N матрицей. Каждый столбец представляет Декартово положение, [x; y;], одного из рассеивателей велосипедиста. N представляет количество рассеивателей и может быть получен с помощью getNumScatterers объектная функция. Модули исчисляются в метрах. Смотрите Велосипедные индексы Рассеивателя для столбца, представляющего положение каждого рассеивателя.

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

Скорости рассеивателей велосипедиста, возвращенных как 3 с действительным знаком N матрицей. Каждый столбец представляет Декартову скорость, [vx; vy; vz], одного из рассеивателей велосипедиста. N представляет количество рассеивателей и может быть получен с помощью getNumScatterers объектная функция. Модули исчисляются в метрах в секунду. Смотрите Велосипедные индексы Рассеивателя для столбца, представляющего скорость каждого рассеивателя.

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

Оси ориентации велосипедиста, возвращенного как 3х3 матрица с действительным знаком. Модули являются безразмерными.

Типы данных: 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

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

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

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

| |

Введенный в R2019b