exponenta event banner

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, input u, output y, process noise w и measurement noise v. Предположим, что можно представить установку как нелинейную систему.

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

  • Аддитивные шумовые термины - уравнения перехода и измерений состояния имеют следующий вид:

    x [k] = f (x [k 1], us [k 1]) + w [k 1] 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 [k 1], w [k 1], us [k 1]) 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 true - Шум процесса w является аддитивной, и функция перехода состояния определяет, как состояния развиваются как функция значений состояния на предыдущем шаге времени:

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

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

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

    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 true - Шум измерения v является аддитивной, и функция измерения определяет, как измерения развиваются в зависимости от значений состояния:

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

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

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

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

Если известно распределение состояния и ковариации состояния, можно настроить эти параметры для захвата преобразования моментов высшего порядка распределения. Алгоритм может отслеживать только один пик в распределении вероятностей состояния. Если в распределении состояний системы имеется несколько пиков, можно настроить эти параметры так, чтобы сигма-точки оставались в пределах одного пика. Например, выберите маленький 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 true - Шум измерения v является аддитивной, и функция измерения определяет, как измерения развиваются в зависимости от значений состояния:

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

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

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

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

Для просмотра примера функции измерения с аддитивным технологическим шумом введите edit vdpMeasurementFcn в командной строке. Для просмотра примера функции измерения с неаддитивным технологическим шумом введите edit vdpMeasurementNonAdditiveNoiseFcn.

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

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

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

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

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

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

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

  • HasAdditiveProcessNoise false - определяет ковариацию как матрицу 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 true - Шум процесса w является аддитивной, и функция перехода состояния определяет, как состояния развиваются как функция значений состояния на предыдущем шаге времени:

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

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

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

    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 изменилось поведение

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

.
Представлен в R2016b