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 содержит матрицу ориентации левой голени.

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

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

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

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

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

| |

Введенный в R2019a