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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)