extendedKalmanFilter

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

Описание

пример

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 на временном шаге kW и 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

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

residualВозвратите различие между фактическими и предсказанными измерениями.
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 свойство обозначает отклонение шума измерения.

Copyright 2012 The MathWorks, Inc

Создайте расширенный объект Фильтра Калмана для осциллятора Ван дер Поля с двумя состояниями и одним выходом. Используйте ранее записанные и сохраненные функции изменения состояния и измерения, 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;

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

Откорректируйте оценку состояния измерением yK]=0.8 и вход uK]=0.2 на временном шаге k.

correct(obj,0.8,0.2)

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

predict(obj,0.2)

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

[Residual, ResidualCovariance] = residual(obj,0.8,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,Value аргументы. 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 любые дополнительные входные параметры, требуемые вашей функцией измерения.

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

    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 любые дополнительные входные параметры, требуемые вашей функцией изменения состояния.

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

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

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

Вопросы совместимости

развернуть все

Поведение изменяется в R2020b

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

Введенный в R2017b