unscentedKalmanFilter

Создайте объект сигма-точечного фильтра Калмана для онлайновой оценки состояния

Синтаксис

obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState)
obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState,Name,Value)
obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn)
obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,Name,Value)
obj = unscentedKalmanFilter(Name,Value)

Описание

пример

obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState) создает объект сигма-точечного фильтра Калмана для онлайновой оценки состояния дискретного времени нелинейная система. StateTransitionFcn является функцией, которая вычисляет состояние системы во время k, учитывая вектор состояния во время k-1. MeasurementFcn является функцией, которая вычисляет выходное измерение системы во время k, учитывая состояние во время k. InitialState задает начальное значение оценок состояния.

После создания объекта используйте correct и команды predict, чтобы обновить оценки состояния и ошибочные значения ковариации оценки состояния с помощью алгоритма сигма-точечного фильтра Калмана дискретного времени и данных реального времени.

пример

obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState,Name,Value) задает дополнительные атрибуты объекта сигма-точечного фильтра Калмана, использующего один или несколько аргументов пары Name,Value.

obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn) создает объект сигма-точечного фильтра Калмана использование заданных функций изменения состояния и измерения. Перед использованием predict и команд correct, задайте значения начального состояния с помощью записи через точку. Например, для системы с двумя состояниями со значениями начального состояния [1;0], задайте obj.State = [1;0].

obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,Name,Value) задает дополнительные атрибуты объекта сигма-точечного фильтра Калмана, использующего один или несколько аргументов пары Name,Value. Перед использованием predict и команд correct, задайте значения начального состояния с помощью аргументов пары Name,Value или записи через точку.

пример

obj = unscentedKalmanFilter(Name,Value) создает объект сигма-точечного фильтра Калмана со свойствами, заданными с помощью одного или нескольких аргументов пары Name,Value. Перед использованием predict и команд correct, задайте функцию изменения состояния, функцию измерения и значения начального состояния с помощью аргументов пары Name,Value или записи через точку.

Описание объекта

unscentedKalmanFilter создает объект для онлайновой оценки состояния дискретного времени нелинейная система с помощью алгоритма сигма-точечного фильтра Калмана дискретного времени.

Считайте объект с состояниями x, входом u, выводом y, шум процесса w и шум измерения v. Примите, что можно представлять объект как нелинейную систему.

Алгоритм вычисляет оценки состояния x^ из нелинейной системы с помощью функций изменения состояния и измерения задан вами. Программное обеспечение позволяет вам задать шум в этих функциях как дополнение или недополнение:

  • Аддитивные Шумовые Условия — изменение состояния и уравнения измерений имеют следующую форму:

    x[k]=f(x[k1],us[k1])+w[k1]y[k]=h(x[k],um[k])+v[k]

    Здесь f является нелинейной функцией изменения состояния, которая описывает эволюцию состояний x от одного временного шага до следующего. Нелинейная функция измерения h связывает x с измерениями y на временном шаге k. w и v являются нулевым средним значением, некоррелироваными шумами процесса и измерения, соответственно. Эти функции могут также иметь дополнительные входные параметры, которые обозначаются us и um в уравнениях. Например, дополнительные аргументы могли быть временным шагом k или входные параметры u к нелинейной системе. Может быть несколько таких аргументов.

    Обратите внимание на то, что шумовые условия в обоих уравнениях являются дополнением. Таким образом, x(k) линейно связан с шумом процесса w(k-1), и y(k) линейно связан с шумом измерения v(k).

  • Неаддитивные Шумовые Условия — программное обеспечение также поддерживает более комплексные функции изменения состояния и измерения, где x состояния [k] и измерение y [k] является нелинейными функциями шума процесса и шума измерения, соответственно. Когда шумовые условия являются недополнением, изменение состояния и уравнение измерений имеют следующую форму:

    x[k]=f(x[k1],w[k1],us[k1])y[k]=h(x[k],v[k],um[k])

Когда вы выполняете онлайновую оценку состояния, вы сначала создаете нелинейную функцию изменения состояния f и функция измерения h. Вы затем создаете объект unscentedKalmanFilter с помощью этих нелинейных функций и задаете, являются ли шумовые условия дополнением или недополнением. После того, как вы создадите объект, вы используете команду predict, чтобы предсказать оценки состояния на следующем временном шаге и correct, чтобы исправить оценки состояния с помощью алгоритма сигма-точечного фильтра Калмана и данных реального времени. Для получения информации об алгоритме смотрите Расширенный и Алгоритмы Сигма-точечного фильтра Калмана для Онлайновой Оценки состояния.

Можно использовать следующие команды с объектами unscentedKalmanFilter:

КомандаОписание
correct

Исправьте ошибочную ковариацию оценки состояния и оценки состояния на временном шаге k с помощью результатов измерений на временном шаге k.

predict

Предскажите ошибочную ковариацию оценки состояния и оценки состояния во время следующий временной шаг.

clone

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

Не создавайте дополнительные объекты с помощью синтаксиса obj2 = obj. Любые изменения, внесенные в свойства нового объекта, созданного таким образом (obj2) также, изменяют свойства исходного объекта (obj).

Для свойств объектов unscentedKalmanFilter смотрите Свойства.

Примеры

свернуть все

Чтобы задать объект сигма-точечного фильтра Калмана для оценки состояний вашей системы, вы пишете и сохраняете функцию изменения состояния и функцию измерения для системы.

В этом примере используйте ранее записанные и сохраненные функции изменения состояния и измерения, vdpStateFcn.m и vdpMeasurementFcn.m. Эти функции описывают дискретное приближение к осциллятору Ван дер Поля с параметром нелинейности, mu, равный 1. Осциллятор имеет два состояния.

Задайте исходное предположение для двух состояний. Вы задаете предположение начального состояния как M - строка элемента или вектор-столбец, где M является количеством состояний.

initialStateGuess = [1;0];

Создайте объект сигма-точечного фильтра Калмана. Используйте указатели на функцию, чтобы предоставить функции изменения состояния и измерения объекту.

obj = unscentedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,initialStateGuess);

Объект имеет структуру по умолчанию, где шум процесса и измерения является дополнением.

Чтобы оценить состояния и ошибочную ковариацию оценки состояния от созданного объекта, используйте correct и команды predict и данные реального времени.

Создайте объект сигма-точечного фильтра Калмана для осциллятора Ван дер Поля с двумя состояниями и одним выводом. Используйте ранее записанные и сохраненные функции изменения состояния и измерения, vdpStateFcn.m и vdpMeasurementFcn.m. Эти функции записаны для условий шума аддитивного процесса и измерения. Задайте значения начального состояния для двух состояний как [2; 0].

Поскольку система имеет два состояния, и шум процесса является дополнением, шум процесса является вектором с 2 элементами, и ковариация шума процесса является матрицей 2 на 2. Примите, что нет никакой взаимной корреляции между условиями шума процесса и обоими, которые условия имеют то же отклонение 0.01. Можно задать ковариацию шума процесса как скаляр. Программное обеспечение использует скалярное значение, чтобы создать диагональную матрицу 2 на 2 с 0,01 на диагоналях.

Задайте ковариацию шума процесса во время объектной конструкции.

obj = unscentedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,[2;0],...
    'ProcessNoise',0.01);

Также можно задать шумовые ковариации после объектной конструкции с помощью записи через точку. Например, задайте ковариацию шума измерения как 0,2.

obj.MeasurementNoise = 0.2;

Поскольку система имеет только один вывод, шум измерения является вектором с 1 элементом, и свойство MeasurementNoise обозначает отклонение шума измерения.

Создайте объект сигма-точечного фильтра Калмана для осциллятора Ван дер Поля с двумя состояниями и одним выводом. Примите, что условия шума процесса в функции изменения состояния являются дополнением. Таким образом, существует линейное отношение между шумом процесса и состоянием. Также примите, что условия шума измерения являются недополнением. Таким образом, между шумом измерения и измерения существует нелинейное отношение.

obj = unscentedKalmanFilter('HasAdditiveMeasurementNoise',false);

Задайте функцию изменения состояния и функции измерения. Используйте ранее записанные и сохраненные функции, vdpStateFcn.m и vdpMeasurementNonAdditiveNoiseFcn.m.

Функция изменения состояния записана, приняв, что шум процесса является дополнением. Функция измерения записана, приняв, что шум измерения является недополнением.

obj.StateTransitionFcn = @vdpStateFcn;
obj.MeasurementFcn = @vdpMeasurementNonAdditiveNoiseFcn;

Задайте значения начального состояния для двух состояний как [2; 0].

obj.State = [2;0];

Можно теперь использовать correct и команды predict, чтобы оценить ошибочные значения ковариации оценки состояния и оценки состояния от созданного объекта.

Рассмотрите нелинейную систему с входом u, чей x состояния и измерение y развивает согласно следующим уравнениям изменения состояния и измерения:

x[k]=x[k-1]+u[k-1]+w[k-1]

y[k]=x[k]+2*u[k]+v[k]2

w шума процесса системы является дополнением, в то время как шум измерения v является недополнением.

Создайте функцию изменения состояния и функцию измерения для системы. Задайте функции с дополнительным входом u.

f = @(x,u)(sqrt(x+u));
h = @(x,v,u)(x+2*u+v^2);

f и h являются указателями на функцию к анонимным функциям, которые хранят функции изменения состояния и измерения, соответственно. В функции измерения, потому что шум измерения является недополнением, v также задан как вход. Обратите внимание на то, что v задан как вход перед дополнительным входом u.

Создайте объект сигма-точечного фильтра Калмана для оценки состояния нелинейной системы с помощью заданных функций. Задайте начальное значение состояния как 1, и шум измерения как недополнение.

obj = unscentedKalmanFilter(f,h,1,'HasAdditiveMeasurementNoise',false);

Задайте ковариацию шума измерения.

obj.MeasurementNoise = 0.01;

Можно теперь оценить состояние системы с помощью команд correct и predict. Вы передаете значения u к predict и correct, которые в свою очередь передают их функциям изменения состояния и измерения, соответственно.

Исправьте оценку состояния с измерением y [k] =0.8 и введите u [k] =0.2 на временном шаге k.

correct(obj,0.8,0.2)

Предскажите состояние на следующем временном шаге, данном u [k] =0.2.

predict(obj,0.2)

Входные параметры

свернуть все

Функция изменения состояния f, заданный как указатель на функцию. Функция вычисляет Ns - вектор состояния элемента системы на временном шаге k, учитывая вектор состояния на временном шаге k-1. Ns является количеством состояний нелинейной системы.

Вы пишете и сохраняете функцию изменения состояния для своей нелинейной системы и используете его, чтобы создать объект. Например, если vdpStateFcn.m является функцией изменения состояния, задайте StateTransitionFcn как @vdpStateFcn. Можно также задать StateTransitionFcn как указатель на функцию к анонимной функции.

Входные параметры к функции, которую вы пишете, зависят от того, задаете ли вы шум процесса как дополнение или недополнение в свойстве HasAdditiveProcessNoise объекта:

  • HasAdditiveProcessNoise верен — шум процесса, w является дополнением, и функция изменения состояния задает, как состояния развиваются как функция значений состояния на предыдущем временном шаге:

    x(k) = f(x(k-1),Us1,...,Usn)

    Где x(k) является предполагаемым состоянием во время k, и Us1,...,Usn является любыми дополнительными входными параметрами, требуемыми вашей функцией изменения состояния, такими как системные входные параметры или шаг расчета. Во время оценки вы передаете эти дополнительные аргументы команде predict, которая в свою очередь передает их функции изменения состояния.

  • HasAdditiveProcessNoise является ложным — шум процесса является недополнением, и функция изменения состояния также задает, как состояния развиваются как функция шума процесса:

    x(k) = f(x(k-1),w(k-1),Us1,...,Usn)

Чтобы видеть пример функции изменения состояния с шумом аддитивного процесса, введите edit vdpStateFcn в командной строке.

Функция измерения h, заданный как указатель на функцию. Функция вычисляет N - элемент выходной вектор измерения нелинейной системы на временном шаге k, учитывая вектор состояния на временном шаге k. N является количеством измерений системы. Вы пишете и сохраняете функцию измерения и используете ее, чтобы создать объект. Например, если vdpMeasurementFcn.m является функцией измерения, задайте MeasurementFcn как @vdpMeasurementFcn. Можно также задать MeasurementFcn как указатель на функцию к анонимной функции.

Входные параметры к функции зависят от того, задаете ли вы шум измерения как дополнение или недополнение в свойстве HasAdditiveMeasurementNoise объекта:

  • HasAdditiveMeasurementNoise верен — шум измерения, v является дополнением, и функция измерения задает, как измерения развиваются как функция значений состояния:

    y(k) = h(x(k),Um1,...,Umn)

    Где y(k) и x(k) является предполагаемый вывод и оцененное состояние во время k, и Um1,...,Umn является любыми дополнительными входными параметрами, требуемыми вашей функцией измерения. Например, если вы используете несколько датчиков для отслеживания объекта, дополнительный вход мог бы быть положением датчика. Во время оценки вы передаете эти дополнительные аргументы команде correct, которая в свою очередь передает их функции измерения.

  • HasAdditiveMeasurementNoise является ложным — шум измерения является недополнением, и функция измерения также задает, как выходное измерение развивается как функция шума измерения:

    y(k) = h(x(k),v(k),Um1,...,Umn)

Чтобы видеть пример функции измерения с шумом аддитивного процесса, введите edit vdpMeasurementFcn в командной строке. Чтобы видеть пример функции измерения с неаддитивным шумом процесса, введите edit vdpMeasurementNonAdditiveNoiseFcn.

Оценки начального состояния, заданные как Ns - вектор элемента, где Ns является количеством состояний в системе. Задайте значения начального состояния на основе своего знания системы.

Заданное значение хранится в свойстве State объекта. Если вы задаете InitialState как вектор-столбец затем, State является также вектор-столбцом, и predict и команды correct возвращают оценки состояния как вектор-столбец. В противном случае вектор - строка возвращен.

Если вы хотите фильтр с переменными с плавающей точкой с одинарной точностью, задаете InitialState как векторную переменную с одинарной точностью. Например, для системы с двумя состояниями с функциями изменения состояния и измерения vdpStateFcn.m и vdpMeasurementFcn.m, создайте объект сигма-точечного фильтра Калмана с начальными состояниями [1;2] можно следующим образом:

obj = unscentedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,single([1;2]))

Типы данных: double | single

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Используйте аргументы Name,Value, чтобы задать свойства объекта unscentedKalmanFilter во время создания объекта. Например, чтобы создать сигма-точечный фильтр Калмана возражают и задают ковариацию шума процесса как 0,01:

obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState,'ProcessNoise',0.01);

Свойства

свернуть все

Свойства объектов unscentedKalmanFilter имеют три типа:

  • Настраиваемые свойства, которые можно задать многократно, или во время объектной конструкции с помощью аргументов Name,Value, или любое время впоследствии во время оценки состояния. После создания объекта используйте запись через точку, чтобы изменить настраиваемые свойства.

    obj = unscentedKalmanFilter(StateTransitionFcn,MeasurementFcn,InitialState);
    obj.ProcessNoise = 0.01;

    Настраиваемыми свойствами является State, StateCovariance, ProcessNoise, MeasurementNoise, Alpha, Beta и Kappa.

  • Ненастраиваемые свойства, которые можно задать однажды, или во время объектной конструкции или позже использующий точечное понятие. Задайте эти свойства перед оценкой состояния с помощью correct и predict. Свойства StateTransitionFcn и MeasurementFcn принадлежат этой категории.

  • Ненастраиваемые свойства, которые необходимо задать во время объектной конструкции. Свойства HasAdditiveProcessNoise и HasAdditiveMeasurementNoise принадлежат этой категории.

Распространение сигмы указывает вокруг среднего значения состояния, заданного как скалярное значение между 0 и 1 (0 <Alpha <= 1).

Алгоритм сигма-точечного фильтра Калмана обрабатывает состояние системы как случайная переменная со средним значением State и отклонение StateCovariance. Чтобы вычислить состояние и его статистические свойства на следующем временном шаге, алгоритм сначала генерирует набор значений состояния, распределенных вокруг среднего значения State при помощи недушистого преобразования. Эти сгенерированные значения состояния называются точками сигмы. Алгоритм использует каждую из точек сигмы как вход к функциям изменения состояния и измерения, чтобы получить новый набор преобразованных точек состояния и измерений. Преобразованные точки используются, чтобы вычислить ошибочное значение ковариации оценки состояния и оценки состояния на следующем временном шаге.

Распространением точек сигмы вокруг среднего значения состояния управляют два параметра Alpha и Kappa. Третий параметр, Beta, влияет на веса преобразованных точек во время состояния и вычислений ковариации измерения:

  • \alpha Определяет распространение точек сигмы вокруг среднего значения состояния. Это обычно - маленькое положительное значение. Распространение точек сигмы пропорционально Alpha. Меньшие значения соответствуют точкам сигмы ближе к среднему состоянию.

  • \kappa Второй масштабный коэффициент, который обычно устанавливается в 0. Меньшие значения соответствуют точкам сигмы ближе к среднему состоянию. Распространение пропорционально квадратному корню Kappa.

  • \beta Включает предварительные знания распределения состояния. Для Распределений Гаусса Beta = 2 оптимален.

Если вы знаете распределение ковариации состояния и состояния, можно настроить эти параметры, чтобы получить преобразование моментов высшего порядка распределения. Алгоритм может отследить только один пик в распределении вероятностей состояния. Если существует несколько peaks в распределенности вашей системы, можно настроить эти параметры так, чтобы точки сигмы остались вокруг одного пика. Например, выберите маленький Alpha, чтобы сгенерировать точки сигмы близко к среднему значению состояния.

Для получения дополнительной информации см. Алгоритм Сигма-точечного фильтра Калмана.

Alpha является настраиваемым свойством. Можно изменить его с помощью записи через точку.

Характеристика распределенности, которая используется, чтобы настроить веса преобразованных точек сигмы, заданных как скалярное значение, больше, чем или равный 0. Для Распределений Гаусса Beta = 2 является оптимальным выбором.

Для получения дополнительной информации см. описание свойства Alpha.

Beta является настраиваемым свойством. Можно изменить его с помощью записи через точку.

Характеристики шума измерения, заданные как одно из следующих значений:

  • tRUE Шум измерения v является дополнением. Функция измерения h, который задан в MeasurementFcn, имеет следующую форму:

    y(k) = h(x(k),Um1,...,Umn)

    Где y(k) и x(k) является предполагаемый вывод и оцененное состояние во время k, и Um1,...,Umn является любыми дополнительными входными параметрами, требуемыми вашей функцией измерения.

  • ложь Шум измерения является недополнением. Функция измерения задает, как выходное измерение развивается как функция шума измерения и состояния:

    y(k) = h(x(k),v(k),Um1,...,Umn)

HasAdditiveMeasurementNoise является ненастраиваемым свойством, и можно задать его только во время объектной конструкции. Вы не можете изменить его с помощью записи через точку.

Характеристики шума процесса, заданные как одно из следующих значений:

  • tRUE Шум процесса w является дополнением. Функция изменения состояния f, заданный в StateTransitionFcn, имеет следующую форму:

    x(k) = f(x(k-1),Us1,...,Usn)

    Где x(k) является предполагаемым состоянием во время k, и Us1,...,Usn является любыми дополнительными входными параметрами, требуемыми вашей функцией изменения состояния.

  • ложь Шум процесса является недополнением. Функция изменения состояния задает, как состояния развиваются как функция состояния и шума процесса на предыдущем временном шаге:

    x(k) = f(x(k-1),w(k-1),Us1,...,Usn)

HasAdditiveProcessNoise является ненастраиваемым свойством, и можно задать его только во время объектной конструкции. Вы не можете изменить его с помощью записи через точку.

Распространение сигмы указывает вокруг среднего значения состояния, заданного как скалярное значение между 0 и 3 (0 <= Kappa <= 3). Kappa обычно задается как 0. Меньшие значения соответствуют точкам сигмы ближе к среднему состоянию. Распространение пропорционально квадратному корню Kappa. Для получения дополнительной информации см. описание свойства Alpha.

Kappa является настраиваемым свойством. Можно изменить его с помощью записи через точку.

Функция измерения h, заданный как указатель на функцию. Функция вычисляет N - элемент выходной вектор измерения нелинейной системы на временном шаге k, учитывая вектор состояния на временном шаге k. N является количеством измерений системы. Вы пишете и сохраняете функцию измерения и используете ее, чтобы создать объект. Например, если vdpMeasurementFcn.m является функцией измерения, задайте MeasurementFcn как @vdpMeasurementFcn. Можно также задать MeasurementFcn как указатель на функцию к анонимной функции.

Входные параметры к функции зависят от того, задаете ли вы шум измерения как дополнение или недополнение в свойстве HasAdditiveMeasurementNoise объекта:

  • HasAdditiveMeasurementNoise верен — шум измерения, v является дополнением, и функция измерения задает, как измерения развиваются как функция значений состояния:

    y(k) = h(x(k),Um1,...,Umn)

    Где y(k) и x(k) является предполагаемый вывод и оцененное состояние во время k, и Um1,...,Umn является любыми дополнительными входными параметрами, требуемыми вашей функцией измерения. Например, если вы используете несколько датчиков для отслеживания объекта, дополнительный вход мог бы быть положением датчика. Во время оценки вы передаете эти дополнительные аргументы команде correct, которая в свою очередь передает их функции измерения.

  • HasAdditiveMeasurementNoise является ложным — шум измерения является недополнением, и функция измерения также задает, как выходное измерение развивается как функция шума измерения:

    y(k) = h(x(k),v(k),Um1,...,Umn)

Чтобы видеть пример функции измерения с шумом аддитивного процесса, введите edit vdpMeasurementFcn в командной строке. Чтобы видеть пример функции измерения с неаддитивным шумом процесса, введите edit vdpMeasurementNonAdditiveNoiseFcn.

MeasurementFcn является ненастраиваемым свойством. Можно задать его однажды использование команды correct или во время объектной конструкции или во время использования записи через точку после объектной конструкции. Вы не можете изменить его после использования команды correct.

Ковариация шума измерения, заданная как скаляр или матрица в зависимости от значения свойства HasAdditiveMeasurementNoise:

  • HasAdditiveMeasurementNoise верен — Задают ковариацию как скаляр или N-by-N матрица, где N является количеством измерений системы. Задайте скаляр, если нет никакой взаимной корреляции между условиями шума измерения, и все условия имеют то же отклонение. Программное обеспечение использует скалярное значение, чтобы создать N-by-N диагональная матрица.

  • HasAdditiveMeasurementNoise является ложным — Задают ковариацию как V-by-V матрица, где V является количеством условий шума измерения. MeasurementNoise должен быть задан перед использованием correct. После того, как вы зададите MeasurementNoise как матрицу впервые, чтобы затем изменить MeasurementNoise, можно также задать его как скаляр. Задайте как скаляр, если нет никакой взаимной корреляции между условиями шума измерения, и все условия имеют то же отклонение. Программное обеспечение расширяет скаляр к V-by-V диагональная матрица со скаляром на диагоналях.

MeasurementNoise является настраиваемым свойством. Можно изменить его с помощью записи через точку.

Ковариация шума процесса, заданная как скаляр или матрица в зависимости от значения свойства HasAdditiveProcessNoise:

  • HasAdditiveProcessNoise верен — Задают ковариацию как скаляр или Ns-by-Ns матрица, где Ns является количеством состояний системы. Задайте скаляр, если нет никакой взаимной корреляции между условиями шума процесса, и все условия имеют то же отклонение. Программное обеспечение использует скалярное значение, чтобы создать Ns-by-Ns диагональная матрица.

  • HasAdditiveProcessNoise является ложным — Задают ковариацию как W-by-W матрица, где W является количеством условий шума процесса. ProcessNoise должен быть задан перед использованием predict. После того, как вы зададите ProcessNoise как матрицу впервые, чтобы затем изменить ProcessNoise, можно также задать его как скаляр. Задайте как скаляр, если нет никакой взаимной корреляции между условиями шума процесса, и все условия имеют то же отклонение. Программное обеспечение расширяет скаляр к W-by-W диагональная матрица.

ProcessNoise является настраиваемым свойством. Можно изменить его с помощью записи через точку.

Состояние нелинейной системы, заданной как вектор размера Ns, где Ns является количеством состояний системы.

Когда вы используете команду predict, State обновляется с ожидаемым значением на временном шаге k с помощью значения состояния на временном шаге k –1. Когда вы используете команду correct, State обновляется с ориентировочной стоимостью на временном шаге k с помощью результатов измерений на временном шаге k.

Начальное значение State является значением, которое вы задаете во входном параметре InitialState во время создания объекта. Если вы задаете InitialState как вектор-столбец, то State является также вектор-столбцом, и predict и команды correct возвращают оценки состояния как вектор-столбец. В противном случае вектор - строка возвращен. Если вы хотите фильтр с переменными с плавающей точкой с одинарной точностью, необходимо задать State как переменную с одинарной точностью во время объектной конструкции с помощью входного параметра InitialState.

State является настраиваемым свойством. Можно изменить его с помощью записи через точку.

Ошибочная ковариация оценки состояния, заданная как скаляр или Ns-by-Ns матрица, где Ns является количеством состояний системы. Если вы задаете скаляр, программное обеспечение использует скалярное значение, чтобы создать Ns-by-Ns диагональная матрица.

Задайте высокое значение для ковариации, когда вы не уверены в значениях начального состояния, что задаете во входном параметре InitialState.

Когда вы используете команду predict, StateCovariance обновляется с ожидаемым значением на временном шаге k с помощью значения состояния на временном шаге k –1. Когда вы используете команду correct, StateCovariance обновляется с ориентировочной стоимостью на временном шаге k с помощью результатов измерений на временном шаге k.

StateCovariance является настраиваемым свойством. Можно изменить его с помощью записи через точку после использования команды predict или correct.

Функция изменения состояния f, заданный как указатель на функцию. Функция вычисляет Ns - вектор состояния элемента системы на временном шаге k, учитывая вектор состояния на временном шаге k-1. Ns является количеством состояний нелинейной системы.

Вы пишете и сохраняете функцию изменения состояния для своей нелинейной системы и используете его, чтобы создать объект. Например, если vdpStateFcn.m является функцией изменения состояния, задайте StateTransitionFcn как @vdpStateFcn. Можно также задать StateTransitionFcn как указатель на функцию к анонимной функции.

Входные параметры к функции, которую вы пишете, зависят от того, задаете ли вы шум процесса как дополнение или недополнение в свойстве HasAdditiveProcessNoise объекта:

  • HasAdditiveProcessNoise верен — шум процесса, w является дополнением, и функция изменения состояния задает, как состояния развиваются как функция значений состояния на предыдущем временном шаге:

    x(k) = f(x(k-1),Us1,...,Usn)

    Где x(k) является предполагаемым состоянием во время k, и Us1,...,Usn является любыми дополнительными входными параметрами, требуемыми вашей функцией изменения состояния, такими как системные входные параметры или шаг расчета. Во время оценки вы передаете эти дополнительные аргументы команде predict, которая в свою очередь передает их функции изменения состояния.

  • HasAdditiveProcessNoise является ложным — шум процесса является недополнением, и функция изменения состояния также задает, как состояния развиваются как функция шума процесса:

    x(k) = f(x(k-1),w(k-1),Us1,...,Usn)

Чтобы видеть пример функции изменения состояния с шумом аддитивного процесса, введите edit vdpStateFcn в командной строке.

StateTransitionFcn является ненастраиваемым свойством. Можно задать его однажды использование команды predict или во время объектной конструкции или во время использования записи через точку после объектной конструкции. Вы не можете изменить его после использования команды predict.

Выходные аргументы

свернуть все

Объект Сигма-точечного фильтра Калмана для онлайновой оценки состояния, возвращенной как объект unscentedKalmanFilter. Этот объект создается с помощью заданных свойств. Используйте correct и команды predict, чтобы оценить ошибочную ковариацию оценки состояния и оценки состояния с помощью алгоритма сигма-точечного фильтра Калмана.

Когда вы используете predict, obj.State и obj.StateCovariance обновляются с ожидаемым значением на временном шаге k с помощью значения состояния на временном шаге k –1. Когда вы используете correct, obj.State и obj.StateCovariance обновляются с ориентировочными стоимостями на временном шаге k с помощью результатов измерений на временном шаге k.

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

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте