Положение и скорость пешехода
Вычислите отраженный радиолокационный сигнал от пешехода, перемещающегося вдоль оси 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')
Изменение масштаба и показ временных задержек для каждого сигнала.
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')
pedestrian
- Пешеходная цельbackscatterPedestrian
объектПешеходная целевая модель, заданная как backscatterPedestrian
объект.
T
- Длительность следующего интервала пешкомПродолжительность следующей ходьбы интервала, заданная как положительная скалярная величина. Модули указаны в секундах.
Пример: 0.75
Типы данных: double
ANGH
- Пешеходный курсКурс пешехода, указанный как скаляр. Курс измеряется в xy -плоске от оси x -в направлении оси y -. Модули указаны в степенях.
Пример: -34
Типы данных: double
BPPOS
- Положения сегментов телаПоложения сегментов тела, возвращенные как действительная матрица 3 на 16. Каждый столбец представляет Декартову позицию, [x;y;z]
, одного из 16 сегментов тела. Модули измерения указаны в метрах. Столбец, представляющий положение каждого сегмента тела, см. в разделе Индексы сегментов тела.
Типы данных: double
BPVEL
- Скорость сегментов телаСкорость сегментов тела, возвращаемая как действительная матрица 3 на 16. Каждый столбец представляет Декартов вектор скорости, [vx;vy;vz]
, одного из 16 сегментов тела. Модули указаны в метрах в секунду. Столбец, представляющий скорость каждого сегмента тела, см. в разделе Индексы сегментов тела.
Типы данных: double
BPAX
- Ориентация сегментов телаОси ориентации сегментов тела, возвращенных как массив 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 |
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.