move

Положение и скорость пешехода

Описание

пример

[BPPOS,BPVEL,BPAX] = move(pedestrian,T,ANGH) возвращает положение, BPPOS, скорость, BPVEL, и оси ориентации, BPAX, сегментов тела движущегося пешехода. Затем объект моделирует движение ходьбы на следующую длительность, заданную в T. ANGH задает текущий угол рыскания.

Примеры

свернуть все

Вычислите отраженный радиолокационный сигнал от пешехода, перемещающегося вдоль оси x от источника. Радар работает на 24 ГГц и расположен в источник. Пешехода изначально в 100 метрах от радара. Передайте линейный FM сигнал, имеющий полосу пропускания 300 МГц. Отраженный сигнал захватывается в момент начала движения пешехода и в две секунды в движение.

Создайте линейную форму FM волны и канал свободного пространства, чтобы распространить форму волны.

c = physconst('Lightspeed');
bw = 300.0e6;
fs = bw;
fc = 24.0e9;
wav = phased.LinearFMWaveform('SampleRate',fs,'SweepBandwidth',bw);
x = wav();
channel = phased.FreeSpace('OperatingFrequency',fc,'SampleRate',fs, ...
    'TwoWayPropagation',true);

Создайте пешеходный объект. Установите начальное положение пешехода равным 100 м на оси X с начальным курсом по положительному направлению X. Высота пешехода составляет 1,8 м, а пешехода ходят со скоростью 0,5 метра в секунду.

pedest = backscatterPedestrian( 'Height',1.8, ...
    'OperatingFrequency',fc,'InitialPosition',[100;0;0], ...
    'InitialHeading',0,'WalkingSpeed',0.5);

Первый вызов на move функция возвращает начальное положение, начальную скорость и начальную ориентацию всех сегментов тела, а затем продвигает движение пешехода на две секунды вперед.

[bppos,bpvel,bpax] = move(pedest,2,0);

Передайте первый импульс пешеходу. Создать 16 реплик сигнала и распространить их в положения сегментов тела пешехода. Используйте rangeangle функция для вычисления угла прихода каждой реплики в соответствующем сегменте тела. Затем используйте reflect функция для возврата когерентной суммы всех отраженных сигналов от сегментов тела в исходном положении пешехода.

radarpos = [0;0;0];
xp = channel(repmat(x,1,16),radarpos,bppos,[0;0;0],bpvel);
[~,ang] = rangeangle(radarpos,bppos,bpax);
y0 = reflect(pedest,xp,ang);

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

[bppos,bpvel,bpax] = move(pedest,2,0);

Передайте и распространите второй импульс в новое положение пешехода.

radarpos = [0;0;0];
xp = channel(repmat(x,1,16),radarpos,bppos,[0;0;0],bpvel);
[~,ang] = rangeangle(radarpos,bppos,bpax);
y1 = reflect(pedest,xp,ang);

Сопоставьте-фильтр и постройте график обоих отраженных импульсов. График показывает увеличенную задержку выхода согласованного фильтра, когда пешехода уходит.

filter = phased.MatchedFilter('Coefficients',getMatchedFilter(wav));
ymf = filter([y0 y1]);
t = (0:size(ymf,1)-1)/fs;
plot(t*1e6,abs(ymf))
xlabel('Time (microsec)')
ylabel('Magnitude')
title('Match-Filtered Reflected Signals')
legend('Signal 1','Signal 2')

Figure contains an axes. The axes with title Match-Filtered Reflected Signals contains 2 objects of type line. These objects represent Signal 1, Signal 2.

Изменение масштаба и показ временных задержек для каждого сигнала.

plot(t*1e6,abs(ymf))
xlabel('Time (microsec)')
ylabel('Magnitude')
title('Matched-Filtered Reflected Signals')
axis([50.65 50.7 0 .0026])
legend('Signal 1','Signal 2')

Figure contains an axes. The axes with title Matched-Filtered Reflected Signals contains 2 objects of type line. These objects represent Signal 1, Signal 2.

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

свернуть все

Пешеходная целевая модель, заданная как backscatterPedestrian объект.

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

Пример: 0.75

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

Курс пешехода, указанный как скаляр. Курс измеряется в xy -плоске от оси x -в направлении оси y -. Модули указаны в степенях.

Пример: -34

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

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

свернуть все

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

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

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

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

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

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

Подробнее о

свернуть все

Индексы сегмента тела

Индексы сегментов тела определяют, какие столбцы BPPOS и BPVEL содержат данные о положении и скорости для определенного сегмента тела. Индексы также указывают на страницу BPAX содержащая матрицу ориентации для определенного сегмента тела. Для примера, столбец третий из BPPOS содержит 3-D положение левой нижней ноги. Страница третья из BPAX содержит матрицу ориентации левой голени.

Индексы сегмента тела

Сегмент телаИндекс сегмента тела
левая нога1
правая нога2
левая голень3
правая голень4
левая верхняя стойка5
правая верхняя стойка6
левое бедро7
правый бедро8
левая нижняя рука9
правая нижняя рука10
левое верхнее плечо11
правый верхний рычаг12
левое плечо13
правое плечо14
шея15
голова16

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

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

.

См. также

| |

Введенный в R2019a