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 МГц. Частота дискретизации в два раза превышает пропускную способность. Велосипедист первоначально находится в 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 объект.

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

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

свернуть все

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

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

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

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

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

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

Подробнее о

свернуть все

Индексы разбрасывателя велосипедов

Индексы бициклиста-рассеивателя определяют, какие столбцы в матрицах положения или скорости рассеивателя содержат данные о положении и скорости для определенного рассеивателя. Для примера, столбец 92 bpos задает 3-D положение одного из рассеивателей на педали.

Рассеиватели колес разделены поровну между колесами. Можно определить общее количество рассеивателей колес, N, путем вычитания 113 из выхода getNumScatterers функция. Количество рассеивателей на колесо N sw = N/2.

Индексы бициклиста-рассеивателя

Компонент велосипедистаИндекс бициклиста-рассеивателя
Система координат и всадник1 … 90
Педали91 … 99
Ноги всадника100 … 113
Переднее колесо114 … 114 + N sw - 1
Заднее колесо114 + N sw... 114 + N - 1

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

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

.

См. также

| |

Введенный в R2021a