A critical component in phased array system applications is the ability to model motion in space. Such modeling includes the motion of arrays, targets, and sources of interference. For convenience, you can ignore the distinction between these objects and collectively model the motion of a platform.

Extended bodies can undergo both translational and rotational motion in space. Phased Array System Toolbox™ software supports modeling of translational motion.

Modeling translational platform motion requires the specification of a position and velocity vector. Specification of a position vector implies a coordinate system. In the Phased Array System Toolbox, platform position and velocity are specified in a Global Coordinate System. You can think of the platform position as the displacement vector from the global origin or as the coordinates of a point with respect to the global origin.

Let *r _{0}* denote the
position vector at time 0 and

The following figure depicts the vector interpretation of translational motion.

When the platform represents a sensor element or array, it is
important to know the orientation of the element or array *local
coordinate axes*. For example, the orientation of the local
coordinate axes is necessary to extract angle information from incident
waveforms. See Global and Local Coordinate Systems for a description of
global and local coordinate systems in the software. Finally, for
platforms with nonconstant velocity, you must be able to update the
velocity vector over time.

You can model platform position, velocity, and local axes orientation
with the `phased.Platform`

object.

Beginning with a simple example, model the motion of a platform over ten time steps. To determine the time step, assume that you have a pulse transmitter with a pulse repetition frequency (PRF) of 1 kilohertz. Accordingly, the time interval between each pulse is 1 millisecond. Set the time step equal to pulse repetition interval.

PRF = 1e3; Tstep = 1/PRF; Nsteps = 10;

hplat = phased.Platform('InitialPosition',[60;80;0], ... 'Velocity', [15;25.98;0]);

The orientation of the local coordinate axes of the platform
is the value of the `InitialOrientationAxes`

property.
You can view the value of this property by entering `hplat.InitialOrientationAxes`

at
the MATLAB^{®} command prompt. Because the `InitialOrientationAxes`

property
is not specified in the construction of the `phased.Platform`

object,
the property is assigned its default value of ```
[1 0 0;0 1
0;0 0 1]
```

.

Use the `step`

method to simulate the translational
motion of the platform.

InitialPos = hplat.InitialPosition; for k = 1:Nsteps pos = step(hplat,Tstep); end FinalPos = pos+hplat.Velocity*Tstep; DistTravel = norm(FinalPos-InitialPos);

The `step`

method returns the current position
of the platform and then updates the platform position based on the
time step and velocity. Equivalently, the first time you invoke the `step`

method,
the output is the position of the platform at *t*=0.

Recall that the platform is moving with a constant velocity
of approximately 30 m/s. The total time elapsed is 0.01 seconds. Invoking
the `step`

method returns the current position
of the platform and then updates that position. Accordingly, you expect
the final position to differ from the initial position by 0.30 meters.
Confirm this difference by examining the value of `DistTravel`

.

Most platforms in phased array applications do not move with
constant velocity. If the time interval described by the number of
time steps is small with respect to the platform's speed, you
can often approximate the velocity as constant. However, there are
situations where you must update the platform's velocity over
time. You can do so with `phased.Platform`

because
the `Velocity`

property is *tunable*.
See What You Cannot Change While Your System Is Running for
details.

In this example, assume you model a target initially at rest. The initial velocity vector is (0,0,0). Assume the time step is 1 millisecond. After 500 milliseconds, the platform begins to move with a speed of approximately 10 m/s. The velocity vector is (7.07,7.07,0). The platform continues at this velocity for an additional 500 milliseconds.

Tstep = 1e-3; Nsteps = 1/Tstep; hplat = phased.Platform('InitialPosition',[100;100;0]); for k = 1:Nsteps/2 [pos,vel] = step(hplat,Tstep); end hplat.Velocity = [7.07; 7.07; 0]; for k=Nsteps/2+1:Nsteps [pos,vel] = step(hplat,Tstep); end

This example uses the `phased.Platform`

object to model the changes
in range between a stationary radar and a moving target. The radar
is located at (1000,1000,0) and has a velocity of (0,0,0). The target
has an initial position of (5000,8000,0) and moves with a constant
velocity of (–30,–45,0). The pulse repetition frequency
(PRF) is 1 kHz. Assume that the radar emits ten pulses.

The example uses `phased.Platform`

to model the
motion of the target and radar. The `global2localcoord`

function
translates the target's rectangular coordinates in the global
coordinate system to spherical coordinates in the local coordinate
system of the radar.

PRF = 1e3; Tstep = 1/PRF; hradar = phased.Platform('InitialPosition',[1000;1000;0]); htgt = phased.Platform('InitialPosition',[5000;8000;0],... 'Velocity',[-30;-45;0]); % Calculate initial target range and angle [InitRng, InitAng] = rangeangle(htgt.InitialPosition,... hradar.InitialPosition); % Calculate relative radial speed v = radialspeed(htgt.InitialPosition,htgt.Velocity,... hradar.InitialPosition); % Simulate target motion Npulses = 10; % Number of pulses for num = 1:Npulses tgtpos = step(htgt,Tstep); end tgtpos = tgtpos+htgt.Velocity*Tstep; % Calculate final target range and angle [FinalRng,FinalAng] = rangeangle(tgtpos,... hradar.InitialPosition); DeltaRng = FinalRng-InitRng;

The constant velocity of the target is approximately 54 m/s.
The total time elapsed is 0.01 seconds. The range between the target
and the radar should decrease by approximately 54 centimeters. Compare
the initial range of the target, `InitRng`

, to the
final range, `FinalRng`

, to confirm that this decrease
occurs.

Was this topic helpful?