extendedKalmanFilter

Создайте расширенный объект Фильтра Калмана для онлайновой оценки состояния

Синтаксис

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

Описание

пример

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

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

пример

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

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

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

пример

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

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

extendedKalmanFilter создает объект для онлайновой оценки состояния дискретного времени, нелинейная система с помощью дискретного времени первого порядка расширила алгоритм Фильтра Калмана.

Считайте объект с состояниями 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. Вы затем создаете объект extendedKalmanFilter с помощью этих нелинейных функций и задаете, являются ли шумовые условия дополнением или недополнением. Можно также задать Якобианы функций изменения состояния и измерения. Если вы не задаете их, программное обеспечение численно вычисляет Якобианы.

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

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

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

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

predict

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

clone

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

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

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

Примеры

свернуть все

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

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

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

initialStateGuess = [1;0];

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

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

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

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

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

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

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

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

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

obj.MeasurementNoise = 0.2;

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

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

obj = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,[2;0]);

Расширенный алгоритм Фильтра Калмана использует Якобианы функций изменения состояния и измерения для оценки состояния. Вы пишете и сохраняете Функции Якоби и обеспечиваете их как указатели на функцию к объекту. В этом примере используйте ранее записанные и сохраненные функции vdpStateJacobianFcn.m и vdpMeasurementJacobianFcn.m.

obj.StateTransitionJacobianFcn = @vdpStateJacobianFcn;
obj.MeasurementJacobianFcn = @vdpMeasurementJacobianFcn;

Обратите внимание на то, что, если вы не задаете Якобианы функций, программное обеспечение численно вычисляет Якобианы. Этот численный расчет может закончиться в увеличенное время вычислений и числовую погрешность оценки состояния.

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

obj = extendedKalmanFilter('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 = extendedKalmanFilter(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 = extendedKalmanFilter(@vdpStateFcn,@vdpMeasurementFcn,single([1;2]))

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

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

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

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

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

Свойства

свернуть все

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

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

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

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

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

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

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

  • 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 является ненастраиваемым свойством, и можно задать его только во время объектной конструкции. Вы не можете изменить его с помощью записи через точку.

Функция измерения 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.

Якобиан измерения функционирует h, заданный как одно из следующего:

  • [] — Якобиан численно вычисляется в каждом вызове команды correct. Это может увеличить время вычислений и числовую погрешность оценки состояния.

  • указатель на функцию — Вы пишете и сохраняете Функцию Якоби и задаете указатель на функцию. Например, если vdpMeasurementJacobianFcn.m является Функция Якоби, задайте MeasurementJacobianFcn как @vdpMeasurementJacobianFcn.

    Функция вычисляет частные производные функции измерения относительно шума измерения и состояний. Количество входных параметров к Функции Якоби должно равняться количеству входных параметров к функции измерения и должно быть задано в том же порядке в обеих функциях. Количество выходных параметров Функции Якоби зависит от свойства HasAdditiveMeasurementNoise:

    • HasAdditiveMeasurementNoise верен — функция вычисляет частные производные функции измерения относительно состояний (h/x). Вывод как N-by-Ns якобиевская матрица, где N является количеством измерений системы, и Ns является количеством состояний.

    • HasAdditiveMeasurementNoise является ложным — функция также возвращает второй выходной параметр, который является частной производной функции измерения относительно условий шума измерения (h/v). Второй выходной параметр возвращен как N-by-V якобиевская матрица, где V является количеством условий шума измерения.

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

MeasurementJacobianFcn является ненастраиваемым свойством. Можно задать его однажды использование команды 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.

Якобиан изменения состояния функционирует f, заданный как одно из следующего:

  • [] — Якобиан численно вычисляется в каждом вызове команды predict. Это может увеличить время вычислений и числовую погрешность оценки состояния.

  • указатель на функцию — Вы пишете и сохраняете Функцию Якоби и задаете указатель на функцию. Например, если vdpStateJacobianFcn.m является Функция Якоби, задайте StateTransitionJacobianFcn как @vdpStateJacobianFcn.

    Функция вычисляет частные производные функции изменения состояния относительно шума процесса и состояний. Количество входных параметров к Функции Якоби должно равняться количеству входных параметров функции изменения состояния и должно быть задано в том же порядке в обеих функциях. Количество выходных параметров функции зависит от свойства HasAdditiveProcessNoise:

    • HasAdditiveProcessNoise верен — функция вычисляет частную производную функции изменения состояния относительно состояний (f/x). Выводом является Ns-by-Ns якобиевская матрица, где Ns является количеством состояний.

    • HasAdditiveProcessNoise является ложным — функция должна также возвратить второй выходной параметр, который является частной производной функции изменения состояния относительно условий шума процесса (f/w). Второй выходной параметр возвращен как Ns-by-W якобиевская матрица, где W является количеством условий шума процесса.

Расширенный алгоритм Фильтра Калмана использует якобиан, чтобы вычислить ошибочную ковариацию оценки состояния.

Чтобы видеть пример Функции Якоби для шума аддитивного процесса, введите edit vdpStateJacobianFcn в командной строке.

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

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

свернуть все

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

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

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

Введенный в R2017b