phased.Platform

Моделируйте движение платформы

Описание

The phased.Platform Система object™ моделирует поступательное движение одной или нескольких платформ в пространстве. Платформа может быть целью, такое как транспортное средство или самолет, или гидроакустическим или радиолокационным передатчиком и приемником. Модель принимает, что платформа подвергается поступательному движению с постоянной скоростью или постоянным ускорением во время каждого шага симуляции. Положения и скорости всегда задаются в глобальной системе координат.

Чтобы смоделировать движущуюся платформу:

  1. Определите и настройте свою платформу с помощью процедуры Конструкции.

  2. Неоднократно вызывайте step метод перемещения платформы по пути, определяемому phased.Platform свойства.

    Поведение step характерен для каждого объекта в тулбоксе.

Примечание

Начиная с R2016b, вместо использования step метод для выполнения операции, заданной системным объектом, можно вызвать объект с аргументами, как если бы это была функция. Для примера, y = step(obj,x) и y = obj(x) выполнять эквивалентные операции.

Конструкция

sPlat = phased.Platform создает платформу Системный объект, sPlat. Объект моделирует стационарную платформу с нулем положения в источнике и скорости.

sPlat = phased.Platform(Name,Value) создает объект, sPlat, с каждым заданным именем свойства, установленным на заданное значение. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

sPlat = phased.Platform(pos,vel,Name,Value) создает объект платформы, sPlat, с InitialPosition установлено на pos и Velocity установлено на vel. Для другого заданного свойства Names задано значение заданных значений. The pos и vel аргументы только для значения. Аргументы только для значений не требуют заданного имени, но интерпретируются в соответствии с их положениями аргументов. Чтобы задать любой аргумент только для значения, задайте все предыдущие аргументы только для значения.

Модель движения является либо постоянной скоростью, либо постоянным ускорением, либо пользовательской траекторией. Можно выбрать одну из двух моделей движения с помощью MotionModel свойство.

Значение MotionModelИспользование
'Velocity'

Если вы задаете VelocitySource свойство к 'Property'платформа перемещается с постоянной скоростью, определяемой Velocity свойство. Можно задать InitialPosition свойство или оставьте его на своем значении по умолчанию. Можно изменить настраиваемую Velocity свойство на любом шаге симуляции.

Когда вы устанавливаете VelocitySource свойство к 'Input port', можно ввести мгновенную скорость как аргумент в step способ. Определите начальное положение с помощью InitialPosition свойство или оставьте его как значение по умолчанию.

'Acceleration'

Когда вы устанавливаете AccelerationSource свойство к 'Property'платформа перемещается с постоянным ускорением, определяемым Acceleration свойство. Можно задать InitialPosition и InitialVelocity свойства или оставьте их по умолчанию. Можно изменить настраиваемую Acceleration свойство на любом шаге симуляции.

Когда вы устанавливаете AccelerationSource свойство к 'Input port', можно ввести мгновенное ускорение как аргумент в step способ. Задайте InitialPosition и InitialVelocity свойства или оставьте их в качестве значений по умолчанию.

'Обычай'Задайте движение платформы, используя ряд путевых точек в CustomTrajectory свойство.

Свойства

MotionModel

Модель движения объекта

Модель движения объекта, заданная как 'Velocity', 'Acceleration', или 'Custom'. Когда вы устанавливаете это свойство на 'Velocity'платформа следует траектории постоянной скорости во время каждого шага симуляции. Когда вы устанавливаете это свойство на 'Acceleration'платформа следует постоянной траектории ускорения во время каждого шага симуляции. Когда вы устанавливаете свойство на 'Custom'движение платформы следует последовательности путевых точек, заданных CustomTrajectory свойство. Объект выполняет кусочно-кубическую интерполяцию по путевым точкам, чтобы вывести положение и скорость на каждом временном шаге.

По умолчанию: 'Velocity'

InitialPosition

Начальное положение платформы

Начальное положение платформы, заданное как действительный вектор-столбец 3 на 1 в виде [x;y;z] или вещественную матрицу 3-by- N, где N - количество платформ. Каждый столбец принимает форму [x;y;z]. Позиционные модули - метры.

По умолчанию: [0;0;0]

InitialVelocity

Начальная скорость платформы

Начальная скорость платформы, заданная как реальный вектор-столбец 3 на 1 в виде [vx;vy;vz] или вещественную матрицу 3-by- N, где N - количество платформ. Каждый столбец принимает форму [vx;vy;vz]. Модулями скорости являются метры в секунду.

Это свойство применяется только при установке MotionModel свойство к 'Velocity' и VelocitySource на 'Input port', или когда вы устанавливаете MotionModel свойство к 'Acceleration'.

По умолчанию: [0;0;0]

VelocitySource

Источник данных о скорости

Источник данных о скорости, заданный как один из 'Property' или 'Input port'. Когда вы задаете значение этого свойства равным 'Property', использовать Velocity свойство, чтобы задать скорость. Когда вы устанавливаете это свойство на 'Input port', используйте входной параметр step метод для установки скорости.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Velocity'.

По умолчанию: 'Property'

Velocity

Текущая скорость платформы

Задайте текущую скорость платформы как реальный вектор-столбец 3 на 1 в виде [vx;vy;vz] или 3-байтовая N вещественная матрица для нескольких платформ. Каждый столбец принимает форму [vx;vy;vz]. Скорость модулей в метрах/сек. Размерность N это количество платформ.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Velocity' и VelocitySource на 'Property'. Это свойство настраивается.

По умолчанию: [0;0;0]

AccelerationSource

Источник данных ускорения

Источник данных ускорения, заданный как один из 'Property' или 'Input port'. Когда вы задаете значение этого свойства равным 'Property', задайте ускорение используя Acceleration свойство. Когда вы устанавливаете это свойство на 'Input port', используйте входной параметр step метод для установки ускорения.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Acceleration'.

По умолчанию: 'Property'

Acceleration

Ускорение работы платформы

Задайте текущее ускорение платформы как реальный вектор-столбец 3 на 1 в форме [ax;ay;az] или вещественную матрицу 3- N с каждым столбцом, принимающим форму [ax;ay;az]. Размерность N это количество платформ. Модулями ускорения являются счетчики/сек/сек.

Это свойство применяется, когда вы устанавливаете MotionModel свойство к 'Acceleration' и AccelerationSource на 'Property'. Это свойство настраивается.

По умолчанию: [0;0;0]

CustomTrajectory

Пользовательские путевые точки траектории.

Пользовательские точки пути траектории, заданные как вещественный M -by- L матрица или M -by- L -by- N массив. M - количество путевых точек. L или 4, или 7.

  • Когда L равно 4, первый столбец указывает время, в которое измеряется положение платформы. 2nd до 4th столбцы являются позиционными измерениями в координатах x, y и z. Скорость определяется из измерений положения.

  • Когда L равно 7, 5-е через семьth столбцы в матрице являются измерениями скорости в координатах x, y и z.

Когда вы устанавливаете CustomTrajectory свойство для трехмерного массива, количество страниц, N, представляет количество платформ. Модули времени указаны в секундах, модули положения указаны в метрах и модули скорости указаны в метрах в секунду.

Чтобы включить это свойство, установите MotionModel свойство к 'Custom'.

ScanMode

Режим механического сканирования

Режим механического скана для платформы, заданный как 'None', 'Circular'', или 'Sector', где 'None' является значением по умолчанию. Когда вы устанавливаете ScanMode свойство к 'Circular'сканирование платформы по часовой стрелке на 360 степени непрерывно в азимутальном направлении осей ориентации платформы. Когда вы устанавливаете ScanMode свойство к 'Sector'платформа сканов по часовой стрелке в азимутальном направлении в осях ориентации платформы в пределах области значений, заданной AzimuthSpan свойство. Когда скан платформы достигает пределов диапазона, скан изменяет направление назад к другому пределу скана. Сканирование происходит в пределах осей ориентации платформы.

InitialScanAngle

Начальный угол скана платформы

Начальный угол скана платформы, заданный как вектор 1-by- N, где N - количество платформ. Сканирование происходит в локальной системе координат платформы. The InitialOrientationAxes задает исходную локальную систему координат. В начале симуляции оси ориентации, заданные InitialOrientationAxes повернуты на угол, заданный в InitialScanAngle свойство. Значение по умолчанию является нулем. Модули указаны в степенях. Это свойство применяется, когда вы устанавливаете ScanMode свойство к 'Circular' или 'Sector'.

Пример: [30 40]

AzimuthSpan

Азимутальный пролет

Диапазон угла азимута, заданный как матрица N-на-2, где N - количество платформ. Каждая строка матрицы задает область значений скана соответствующей платформы в форме [ScanAngleLowerBound ScanAngleHigherBound]. Значение по умолчанию [-60 60]. Модули указаны в степенях. Чтобы включить это свойство, установите ScanMode на 'Sector'.

AzimuthScanRate

Скан азимута

Скан Азимута, заданная как 1-бай- N вектор, где N - количество платформ. Каждая запись в векторе является частотой скана азимута для соответствующей платформы. Значение по умолчанию является 10 градусов/секунду. Модули указаны в градусах/секунду. Чтобы включить это свойство, установите ScanMode свойство к 'Circular' или 'Sector'.

InitialOrientationAxes

Начальные оси ориентации платформы

Начальные оси ориентации платформы, заданные как действительная ортонормальная матрица 3 на 3 для одной платформы или как 3х3-бай- N вещественная матрица для нескольких платформ. Размерность N это количество платформ. Когда матрица ориентации 3 на 3, три столбца представляют оси локальной системы координат (xyz). Когда матрица ориентации 3х3-бай- N, для каждого индекса страницы получившаяся матрица 3х3 представляет оси локальной системы координат.

По умолчанию: [1 0 0;0 1 0;0 0 1]

OrientationAxesOutputPort

Выходные оси ориентации

Чтобы получить оси мгновенной ориентации платформы, установите это свойство на true и используйте соответствующий выходной аргумент при вызове step. Если вы не хотите получать оси ориентации платформы, задайте для этого свойства false.

По умолчанию: false

Методы

сбросСбросьте платформу в начальное положение
шагВыходное положение тока, скорость и оси ориентации платформы
Общий для всех системных объектов
release

Разрешить изменение значения свойства системного объекта

Примеры

свернуть все

Создайте платформу в источник со скоростью (100,100,0) метров в секунду. Симулируйте движение платформы в течение двух временных шагов, принимая, что время, прошедшее для каждого шага, составляет одну секунду. Положение платформы обновляется после каждого шага.

sPlat = phased.Platform([0; 0; 0],[100; 100; 0]);
T = 1;

При первом вызове шага положение определяется своим начальным значением.

[pos,v] = step(sPlat,T);
pos
pos = 3×1

     0
     0
     0

При втором вызове шага положение изменяется.

[pos,v] = step(sPlat,T);
pos
pos = 3×1

   100
   100
     0

Начните с самолета, двигающегося со скоростью 150 км/ч по кругу радиуса 10 км и снижающегося одновременно со скоростью 20 м/сек. Вычислите движение самолета от его мгновенного ускорения как аргумент к step способ. Установите начальную ориентацию платформы в тождества, совпадающее с глобальной системой координат.

Настройка сценария

Задайте начальное положение и скорость самолета. Самолёт имеет наземную область значений 10 км и высоту 20 км.

range = 10000;
alt = 20000;
initPos = [cosd(60)*range;sind(60)*range;alt];
originPos = [1000,1000,0]';
originVel = [0,0,0]';
vs = 150.0;
phi = atan2d(initPos(2)-originPos(2),initPos(1)-originPos(1));
phi1 = phi + 90;
vx = vs*cosd(phi1);
vy = vs*sind(phi1);
initVel = [vx,vy,-20]';
platform = phased.Platform('MotionModel','Acceleration',...
    'AccelerationSource','Input port','InitialPosition',initPos,...
    'InitialVelocity',initVel,'OrientationAxesOutputPort',true,...
    'InitialOrientationAxes',eye(3));
relPos = initPos - originPos;
relVel = initVel - originVel;
rel2Pos = [relPos(1),relPos(2),0]';
rel2Vel = [relVel(1),relVel(2),0]';
r = sqrt(rel2Pos'*rel2Pos);
accelmag = vs^2/r;
unitvec = rel2Pos/r;
accel = -accelmag*unitvec;
T = 0.5;
N = 1000;

Вычислите траекторию

Задайте ускорение объекта, перемещающегося по кругу в плоскости x-y. Ускорение v ^ 2/r к источнику.

posmat = zeros(3,N);
r1 = zeros(N);
v = zeros(N);
for n = 1:N
    [pos,vel,oax] = platform(T,accel);
    posmat(:,n) = pos;
    vel2 = vel(1)^2 + vel(2)^2;
    v(n) = sqrt(vel2);
    relPos = pos - originPos;
    rel2Pos = [relPos(1),relPos(2),0]';
    r = sqrt(rel2Pos'*rel2Pos);
    r1(n) = r;
    accelmag = vel2/r;
    accelmag = vs^2/r;
    unitvec = rel2Pos/r;
    accel = -accelmag*unitvec;
end

Отображение конечной ориентации локальной системы координат.

disp(oax)
   -0.3658   -0.9307   -0.0001
    0.9307   -0.3658   -0.0010
    0.0009   -0.0005    1.0000

Постройте график траектории и источника положения

posmat = posmat/1000;
figure(1)
plot3(posmat(1,:),posmat(2,:),posmat(3,:),'b.')
hold on
plot3(originPos(1)/1000,originPos(2)/1000,originPos(3)/1000,'ro')
xlabel('X (km)')
ylabel('Y (km)')
zlabel('Z (km)')
grid
hold off

Figure contains an axes. The axes contains 2 objects of type line.

Этот пример показывает

Создайте путевые точки из параболического движения.

x0 = 100;
y0 = -150;
z0 = 0;
vx = 5;
vy = 10;
vz = 0;
ax = 1;
ay = -1;

t = [0:2:20];
x = x0 + vx*t + ax/2*t.^2;
y = y0 + vy*t + ay/2*t.^2;
z = z0*ones(size(t));
wpts = [t.' x.' y.' z.'];

Создайте объект платформы с движением, определенным с помощью путевых точек.

pltfm = phased.Platform('MotionModel','Custom','CustomTrajectory',wpts);
tstep = .5;
nsteps = 40;
X = [];

Продвигайтесь платформу временных шагов за одну половину секунды;.

for k = 1:nsteps
    [pos,vel] = pltfm(tstep);
    X = [X;pos'];    
end
plot(x,y,'o'); hold on
plot(X(:,1),X(:,2),'.')
hold off;

Figure contains an axes. The axes contains 2 objects of type line.

Подробнее о

расширить все

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

.
Введенный в R2011a