unscentedKalmanFilter

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

Описание

пример

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

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

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

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

predict

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

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

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

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

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

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

свернуть все

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

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

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

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

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

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

Введенный в R2017b