# move

Position and velocity of walking pedestrian

## Description

## Examples

### Reflected Signal from Moving Pedestrian

Compute the reflected radar signal from a pedestrian moving along the *x*-axis away from the origin. The radar operates at 24 GHz and is located at the origin. The pedestrian is initially 100 meters from the radar. Transmit a linear FM waveform having a 300 MHz bandwidth. The reflected signal is captured at the moment the pedestrian starts to move and at two seconds into the motion.

Create a linear FM waveform and a free space channel to propagate the waveform.

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);

Create the pedestrian object. Set the initial position of the pedestrian to 100 m on the *x*-axis with initial heading along the positive *x*-direction. The pedestrian height is 1.8 m and the pedestrian is walking at 0.5 meters per second.

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

The first call to the `move`

function returns the initial position, initial velocity, and initial orientation of all body segments and then advances the pedestrian motion two seconds ahead.

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

Transmit the first pulse to the pedestrian. Create 16 replicas of the signal and propagate them to the positions of the pedestrian body segments. Use the `rangeangle`

function to compute the arrival angle of each replica at the corresponding body segment. Then use the `reflect`

function to return the coherent sum of all the reflected signals from the body segments at the pedestrian initial position.

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);

Obtain the position, velocity, and orientation of each body segment then advance the pedestrian motion another two seconds.

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

Transmit and propagate the second pulse to the new position of the pedestrian.

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);

Match-filter and plot both of the reflected pulses. The plot shows the increased delay of the matched filter output as the pedestrian walks away.

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')

Zoom in and show the time delays for each signal.

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')

## Input Arguments

`pedestrian`

— Pedestrian target

`backscatterPedestrian`

object

Pedestrian target model, specified as a `backscatterPedestrian`

object.

`T`

— Duration of next walking interval

scalar

Duration of next walking interval, specified as a positive scalar. Units are in seconds.

**Example: **`0.75`

**Data Types: **`double`

`ANGH`

— Pedestrian heading

scalar

Heading of the pedestrian, specified as a scalar. Heading is measured in the
*xy*-plane from the *x*-axis towards the
*y*-axis. Units are in degrees.

**Example: **`-34`

**Data Types: **`double`

## Output Arguments

`BPPOS`

— Positions of body segments

real-valued 3-by-16 matrix

Positions of body segments, returned as a real-valued 3-by-16 matrix. Each column
represents the Cartesian position, `[x;y;z]`

, of one of 16 body
segments. Units are in meters. See Body Segment Indices for the column
representing the position of each body segment.

**Data Types: **`double`

`BPVEL`

— Velocity of body segments

real-valued 3-by-16 matrix

Velocity of body segments, returned as a real-valued 3-by-16 matrix. Each column
represents the Cartesian velocity vector, `[vx;vy;vz]`

, of one of 16
body segments. Units are in meters per second. See Body Segment Indices for the column
representing the velocity of each body segment.

**Data Types: **`double`

`BPAX`

— Orientation of body segments

real-valued 3-by-3-by-16 array

Orientation axes of body segments, returned as a real-valued 3-by-3-by-16 array. Each page represents the 3-by-3 orientation axes of one of 16 body segments. Units are dimensionless. See Body Segment Indices for the page representing the orientation of each body segment.

**Data Types: **`double`

## More About

### Body Segment Indices

Body segment indices define which columns in `BPPOS`

and `BPVEL`

contain the position and velocity data for a specific body
segment. The indices also point to the page of `BPAX`

containing the
orientation matrix for a specific body segment. For example, column three of
`BPPOS`

contains the 3-D position of the left lower leg. Page three of
`BPAX`

contains the orientation matrix of the left lower leg.

Body Segment | Index | |
---|---|---|

Left foot | 1 | |

Right foot | 2 | |

Left lower leg | 3 | |

Right lower leg | 4 | |

Left upper leg | 5 | |

Right upper leg | 6 | |

Left hip | 7 | |

Right hip | 8 | |

Left lower arm | 9 | |

Right lower arm | 10 | |

Left upper arm | 11 | |

Right upper arm | 12 | |

Left shoulder | 13 | |

Right shoulder | 14 | |

Head | 15 | |

Torso | 16 |

## Extended Capabilities

### C/C++ Code Generation

Generate C and C++ code using MATLAB® Coder™.

## Version History

**Introduced in R2019a**

## See Also

## MATLAB Command

You clicked a link that corresponds to this MATLAB command:

Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.

Select a Web Site

Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .

You can also select a web site from the following list:

## How to Get Best Site Performance

Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.

### Americas

- América Latina (Español)
- Canada (English)
- United States (English)

### Europe

- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)

- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)