Particle Filter

Оценка состояний нелинейной системы дискретного времени с использованием фильтра частиц

  • Библиотека:
  • Набор инструментов системы управления/оценка состояния

    Набор средств идентификации/оценки системы

  • pf_block

Описание

Блок Particle Filter оценивает состояния нелинейной системы дискретного времени, используя алгоритм фильтра частиц дискретного времени.

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

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

Вы создаете нелинейную функцию перехода состояния и функции правдоподобия измерения для системы и задаете эти функции в блоке. Блок поддерживает оценку состояния системы с несколькими датчиками, которые работают с различными частотами дискретизации. Можно задать до пяти функций вероятности измерения, каждая из которых соответствует датчику в системе.

Порты

Вход

расширить все

Измеренные выходы системы, соответствующие каждой функции правдоподобия измерения, которую вы задаете в блоке. Количество портов равняется количеству функций вероятности измерения в вашей системе. Можно задать до пяти функций вероятности измерения. Для примера, если ваша система имеет два датчика, вы задаете две функции вероятности измерения в блоке. Первый y1 порта доступен по умолчанию. Щелкните Add Measurement, чтобы сгенерировать y2 порта, соответствующий второй функции правдоподобия измерения.

Задайте порты как N -мерные векторы, где N - количество величин, измеренных соответствующим датчиком. Например, если в вашей системе есть один датчик, который измеряет положение и скорость объекта, то существует только один y1 порта. Порт задается как двумерный вектор со значениями, соответствующими положению и скорости.

Зависимости

Первый y1 порта доступен по умолчанию. Порты, y2 к y5, генерируются при нажатии кнопки Add Measurement.

Необязательный входной параметр в функцию перехода состояния f кроме состояния x.

Если вы создаете f использование MATLAB® функция (.m файл), программное обеспечение генерирует порт StateTransitionFcnInputs, когда вы вводите имя вашей функции и нажимаете Apply.

Если ваша функция перехода состояния имеет более одного дополнительного входа, используйте Simulink Function (Simulink) блок, чтобы задать функцию. Когда вы используете блок Simulink Function, вы предоставляете дополнительные входы непосредственно блоку Simulink Function с помощью блоков Inport (Simulink). Никакие входные порты для дополнительных входов в блоке Particle Filter не генерируются.

Зависимости

Этот порт генерируется только в том случае, если оба из следующих условий удовлетворены:

  • Вы задаете f в Function с помощью функции MATLAB и f находится в пути MATLAB.

  • f требует только один дополнительный входной параметр, кроме частиц.

Необязательные входы в функции правдоподобия измерения, отличные от состояния x и измерительные y.

MeasurementLikelihoodFcn1Inputs соответствует первой заданной вами функции правдоподобия измерения и так далее.

Если вы задаете два входов измерения с помощью функций MATLAB (.m файлы) в Function программное обеспечение генерирует порты MeasurementLikelihoodFcn1Inputs и MeasurementLikelihoodFcn2Inputs при клике Apply. Можно задать входы к этим портам как скаляры, векторы или матрицы.

Если ваши функции вероятности измерения имеют более чем один дополнительный вход, используйте блоки Simulink Function (Simulink), чтобы задать функции. Когда вы используете блок Simulink Function, вы предоставляете дополнительные входы непосредственно блоку Simulink Function с помощью блоков Inport (Simulink). Никакие входные порты для дополнительных входов в блоке Particle Filter не генерируются.

Зависимости

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

  • Вы задаете вход измерения h в Function с помощью функции MATLAB и h находится в пути MATLAB.

  • h требует только один дополнительный входной параметр, кроме частиц и измерений.

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

Для примера примите к сведению, что измеренные выходом данные недоступны во всех временных точках в y1 порта, которая соответствует первой функции правдоподобия измерения. Затем используйте значение сигналов, отличное от 0 в Enable1 порте, чтобы включить коррекцию предполагаемых состояний, когда измеренные данные доступны. Задайте значение порта следующим 0 когда измеренные данные недоступны. Точно так же, если измеренные выходные данные недоступны во всех временных точках порта y i для ith функция правдоподобия измерения, задайте соответствующий порт Enable i как значение, отличное от 0.

Зависимости

Если вы выбираете Add Enable port для функции правдоподобия измерения, генерируется порт, соответствующий этой функции правдоподобия измерения. Порт появляется при нажатии кнопки Apply.

Выход

расширить все

Предполагаемые состояния, возвращенные как вектор размера Ns, где Ns - количество состояний системы. Для доступа к индивидууму состояниям используйте блок Selector (Simulink).

Когда параметр Use the current measurements to improve state estimates выбран, блок выводит исправленную оценку состояния x^[k|k] в временной шаг k, оцененный с использованием измеренных выходов до времени k. Если вы очистите этот параметр, блок вернёт предсказанную оценку состояния x^[k|k1] для временных k, оцененный с использованием измеренного выхода до предыдущего временного k-1. Очистите этот параметр, если ваш фильтр находится в цикле обратной связи, и в вашем Simulink есть алгебраический цикл® модель.

Ковариация ошибки расчета состояния, возвращенная как Ns -by - Ns матрица, где Ns - количество состояний системы. Для доступа к отдельным ковариациям используйте блок Selector (Simulink).

Вывести ковариацию ошибки можно только, если выбрать Output state estimation error covariance на вкладке Block outputs, Multirate и нажать Apply.

Зависимости

Этот параметр доступен, если на вкладке Block outputs, Multirate, параметр State estimation method установлен на 'Mean'.

Значения частиц, используемые для оценки состояния, возвращаются как Ns -by - Np или Np -by - Ns массив. Ns - количество состояний системы, а Np - количество частиц.

  • Если на StateOrientation параметр задается как 'column', затем Particles возвращается как Ns -by - Np массив.

  • Если на StateOrientation параметр задается как 'row', затем Particles возвращается как Np -by - Ns массив.

Зависимости

Этот порт генерируется, если вы выбираете Output all particles на вкладке Block outputs, Multirate и нажимаете Apply.

Веса частиц, используемые для оценки состояния, возвращаются как вектор 1-by- Np или Np-by-1, где Np - количество частиц, используемых для оценки состояния.

  • Если на StateOrientation параметр задается как 'column', затем Weights возвращается как вектор 1-by- Np, где каждый вес сопоставлен с частицей в том же столбце в Particles массив.

  • Если на StateOrientation параметр задается как 'row', затем Weights возвращается как вектор Np -by-1, где каждый вес сопоставлен с частицей в одной строке Particles массив.

Зависимости

Этот порт генерируется, если вы выбираете Output weights на вкладке Block outputs, Multirate и нажимаете Apply.

Параметры

расширить все

Вкладка Системная модель

Переход между состояниями

Функция перехода состояния фильтра частиц вычисляет частицы на временном шаге k+1, заданные частицы на временном шаге k в зависимости от динамики вашей системы и технологического шума. Эта функция имеет синтаксис:

particlesNext = f(particles, param1, param2, ...)

где, particles и particlesNext имеют размерности Ns -by Np, если State Orientation задан как 'column', или Np -by - Ns, если State Orientation задан как 'row'. Кроме того, param_i представляет необязательные входные параметры, которые вы можете задать. Для получения дополнительной информации о необязательных входных аргументах смотрите StateTransitionFcnInputs.

Вы создаете функцию перехода между состояниями и задаете имя функции в Function. Для примера, если vdpParticleFilterStateFcn.m является функцией перехода состояния, которую вы создали и сохранили, задайте Function как 'vdpParticleFilterStateFcn'.

Можно создать Function с помощью блока Simulink Function (Simulink) или как функцию MATLAB (.m файл).

Программное использование

Параметры блоков: StateTransitionFcn
Тип: Вектор символов, строка
По умолчанию: 'vdpParticleFilterStateFcn'
Инициализация

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

Программное использование

Параметры блоков: NumberOfParticles
Тип: положительное скалярное целое число
По умолчанию: 1000

Начальное распределение частиц, заданное как 'Gaussian', 'Uniform', или 'Custom'.

Если вы выбираете 'Gaussian'начальный набор частиц или гипотез состояний распределены по многомерному Гауссову распределению, где вы задаете Mean и Covariance. Начальный вес всех частиц принимается равным.

Если вы выбираете 'Uniform', начальный набор частиц распределены по равномерному распределению, где вы задаете верхний и нижний State bounds. Начальный вес всех частиц принимается равным.

'Custom' позволяет вам задать свой собственный набор начальных частиц и их веса. Можно использовать произвольные распределения вероятностей для Particles и Weights, чтобы инициализировать фильтр.

Программное использование

Параметры блоков: InitialDistribution
Тип: Вектор символов
Значения: 'Gaussian', 'Uniform', 'Custom'
По умолчанию: 'Gaussian'

Начальное среднее значение частиц, заданное как вектор. Количество состояний, которые будут оценены, определяет длину вектора.

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Distribution установлен на Gaussian.

Программное использование

Параметры блоков: InitialMean
Тип: массив
По умолчанию: [0,0]

Начальная ковариация частиц, заданная как скаляр, вектор или матрица.

Если Covariance задано как:

  • Скаляр, тогда он должен быть положительным. Ковариация принята как [Ns Ns] матрица с этим скаляром на диагоналях. Здесь Ns количество состояний.

  • Вектор, тогда каждый элемент должен быть положительным. Ковариация принята как матрица [Ns Ns] с элементами вектора на диагоналях.

  • Матрица, тогда она должна быть положительной полуопределенной.

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Distribution установлен на Gaussian.

Программное использование

Параметры блоков: InitialCovariance
Тип: скаляр, вектор или матрица
По умолчанию: 1

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

Если Circular Variables задан как скаляр, программа расширяет его до вектора, где каждый элемент равен этому скаляру. Округлые (или угловые) распределения используют функцию плотности вероятностей с областью значений [ π]. Используйте круговые переменные, если некоторые из состояний в вашей системе представляют угловые величины, подобные ориентации объекта.

Программное использование

Параметры блоков: CircularVariables
Тип: скаляр, вектор
По умолчанию: 0

Ориентация состояний системы, заданная как 'column' или 'row'.

Если State Orientation задано как:

  • 'column', затем первый входной параметр в функцию перехода состояния и измерения правдоподобия является [Ns Np]. В этом случае ith столбец этой матрицы является ith частица (гипотеза о состоянии). Кроме того, состояния оценивают, xhat выводится как вектор [Ns 1]. Здесь Ns количество состояний, а Np количество частиц.

  • 'row', затем первый входной параметр в функцию перехода состояния и измерения правдоподобия является [Np Ns], и каждая строка этой матрицы содержит частицу. Кроме того, состояния оценивают, xhat выводится как вектор [1 Ns].

Программное использование

Параметры блоков: StateOrientation
Тип: Вектор символов
Значения: 'column', 'row'
По умолчанию: 'column'

Начальные ограничения состояний системы, заданные как массив Ns -by-2, где Ns - количество состояний.

Яth в строке перечислены нижняя и верхняя границы равномерного распределения для начального распределения частиц ith состояние.

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Distribution установлен на Uniform.

Программное использование

Параметры блоков: InitialStateBounds
Тип: массив
По умолчанию: [-3 3;-3 3]

Пользовательское распределение частиц для оценки состояния, заданное как Ns -by - Np или Np -by - Ns массив. Ns - количество состояний системы, а Np - количество частиц.

  • Если на StateOrientation параметр задается как 'column', тогда Particles является Ns -by - Np массивом.

  • Если на StateOrientation параметр задается как 'row', тогда Particles является Np -by - Ns массивом.

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Distribution установлен на Custom.

Программное использование

Параметры блоков: InitialParticles
Тип: массив
По умолчанию: []

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

  • Если на StateOrientation параметр задается как 'column', затем Weights вектор 1-бай- Np. Каждый вес в векторе связан с частицей в том же столбце в Particles массив.

  • Если на StateOrientation параметр задается как 'row', тогда Weights вектор Np -by-1. Каждый вес в векторе связан с частицей в одной строке Particles массив.

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Distribution установлен на Custom.

Программное использование

Параметры блоков: InitialWeights
Тип: положительный вектор
По умолчанию: []
Измерение

Функция правдоподобия измерения вычисляет вероятность частиц (гипотезы о состоянии), используя измерения датчика. Для каждой гипотезы состояния (частицы) функция сначала вычисляет вектор гипотезы измерения Nm -элемент. Затем вероятность каждой гипотезы измерения вычисляется на основе измерения датчика и распределения вероятностей шума измерения. эта функция имеет синтаксис:

likelihood = h(particles, measurement, param1, param2, ...)
где, likelihood - Np элемент, где Np - количество частиц. particles иметь размерности Ns -by - Np, если State Orientation задан как 'column', или Np -by - Ns, если State Orientation задан как 'row'. measurement является вектором Nm-element, где, Nm - количество измерений, которое обеспечивает ваш датчик. param_i представляет необязательные входные параметры, которые вы можете задать. Для получения дополнительной информации о необязательных входных параметрах. MeasurementLikelihoodFcn1Inputs,...,MeasurementLikelihoodFcn5Inputs.

Вы создаете функцию правдоподобия измерения и задаете имя функции в Function. Для примера, если vdpMeasurementLikelihoodFcn.m - функция правдоподобия измерения, которую вы создали и сохранили, задайте Function как 'vdpMeasurementLikelihoodFcn'.

Можно создать Function с помощью блока Simulink Function (Simulink) или как функцию MATLAB (.m файл).

  • Вы можете использовать функцию MATLAB, только если у h есть нуль или один дополнительный входной параметр param_i кроме Particles и Measurement.

    Программное обеспечение генерирует дополнительный входной порт MeasurementLikelihoodFcn iВходы для задания этого аргумента для ith измерение функции правдоподобия и нажатия кнопки Apply.

  • Если вы используете блок Simulink Function, задайте x и y использование Argument Inport (Simulink) блоков и дополнительных входов param_i использование Inport (Simulink) блоков в блоке Simulink Function. Вы не предоставляете param_i в блок Particle Filter.

Если в вашей системе есть несколько датчиков, можно задать несколько функций вероятности измерения. Вы можете задать до пяти функций вероятности измерения с помощью кнопки Add Measurement. Чтобы удалить функции вероятности измерения, используйте Remove Measurement.

Программное использование

Параметры блоков: MeasurementLikelihoodFcn1, MeasurementLikelihoodFcn2, MeasurementLikelihoodFcn3, MeasurementLikelihoodFcn4, MeasurementLikelihoodFcn5
Тип: Вектор символов, строка
По умолчанию: 'vdpMeasurementLikelihoodFcn'

Предположим, что измеренные выходные данные недоступны во всех временных точках в y1 порта, которая соответствует первой функции правдоподобия измерения. Чтобы сгенерировать вход порт Enable1, выберите Add Enable port. Используйте сигнал в этом порте, чтобы включить коррекцию предполагаемых состояний, только когда измеренные данные доступны. Точно так же, если измеренные выходные данные недоступны во всех временных точках порта y i для ith функции правдоподобия измерения, выберите соответствующую Add Enable port.

Программное использование

Параметры блоков: HasMeasurementEnablePort1, HasMeasurementEnablePort2, HasMeasurementEnablePort3, HasMeasurementEnablePort4, HasMeasurementEnablePort5
Тип: Вектор символов
Значения: 'off', 'on'
По умолчанию: 'off'
Передискретизация

Метод, используемый для повторной дискретизации частиц, указанный как одно из следующего:

  • 'Multinomial'

  • 'Systematic'

  • 'Stratified'

Программное использование

Параметры блоков: ResamplingMethod
Тип: Вектор символов
Значения: 'Multinomial', 'Systemic', 'Stratified'
По умолчанию: 'Multinomial'

Метод определения того, когда происходит повторная дискретизация, задается как 'Ratio' или 'Interval'. The 'Ratio' значение запускает повторную дискретизацию на основе отношения эффективных суммарных частиц. The 'Interval' значение запускает повторную дискретизацию на регулярных временных шагах операции фильтра частиц.

Программное использование

Параметры блоков: TriggerMethod
Тип: Вектор символов
Значения: 'Ratio', 'Interval'
По умолчанию: 'Ratio'

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

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

Задайте минимальное эффективное соотношение частиц как любое значение от 0 до 1.

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Trigger method установлен на Ratio.

Программное использование

Параметры блоков: MinEffectiveParticleRatio
Тип: скаляр
Значения: Область значений [0,1]
По умолчанию: 0.5

Фиксированный интервал между повторной дискретизацией, заданный как положительное скалярное целое число. Интервал дискретизации определяет, во время каких шагов коррекции выполняется повторная дискретизация. Для примера значение двух средств повторной дискретизации выполняется на каждом втором этапе коррекции. Значение inf означает, что повторная дискретизация никогда не выполняется.

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Trigger method установлен на Interval.

Программное использование

Параметры блоков: SamplingInterval
Тип: положительное скалярное целое число
По умолчанию: 1
Опции генератора случайных чисел

Являются ли случайные числа повторяемыми, задается как 'Repeatable' или 'Not repeatable'. Если вы хотите получить тот же результат более одного раза, задайте Randomness 'Repeatable', и задайте тот же генератор случайных чисел seed значение в Seed.

Программное использование

Параметры блоков: Randomness
Тип: Вектор символов
Значения: 'Repeatable', 'Not repeatable'
По умолчанию: 'Repeatable'

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

Зависимости

Этот параметр доступен, если на вкладке System model, параметр Randomness установлен на 'Repeatable'.

Программное использование

Параметры блоков: Seed
Тип: скаляр
По умолчанию: 0
Настройки

Используйте этот параметр, чтобы задать тип данных для всех параметров блоков.

Программное использование

Параметры блоков: DataType
Тип: Вектор символов
Значения: 'single', 'double'
По умолчанию: 'double'

Блок шаг расчета, заданный как положительная скалярная величина.

Используйте параметр Sample time, если ваш переход состояния и все функции вероятности измерения имеют одинаковые шаги расчета. В противном случае выберите опцию Enable multirate operation на вкладке Multirate и укажите шаги расчета на той же вкладке.

Зависимости

Этот параметр доступен, если на вкладке Block output, Multirate, параметр Enable multirate operation off.

Программное использование

Параметры блоков: SampleTime
Тип: Вектор символов, строка
По умолчанию: '1'

Выходы блока, вкладка Multirate

Выходы

Метод, используемый для извлечения оценки состояния из частиц, указанный как одно из следующего:

  • 'Mean' - блок Particle Filter выводит средневзвешенное значение частиц, в зависимости от параметров Weights и Particles, как оценка состояния.

  • 'Maxweight' - блок Particle Filter выводит частицу с самым высоким весом в качестве оценки состояния.

  • 'None' - Используйте эту опцию для реализации пользовательского метода оценки состояния путем доступа ко всем частицам с помощью параметра Output all particles из вкладки Block outputs, Multirate.

Программное использование

Параметры блоков: StateEstimationMethod
Тип: Вектор символов, строка
Значения: 'Mean', 'MaxWeight', 'None'
По умолчанию: 'Mean'

Если вы выбираете этот параметр, порт выхода для частиц, используемых в оценке, Particles генерируется в блоке.

  • Если на StateOrientation параметр задается как 'column', затем частицы выводятся как Ns -by - Np массив. Ns - количество состояний системы, а Np - количество частиц.

  • Если на StateOrientation параметр задается как 'row', затем частицы выводятся как Np -by - Ns массив.

Программное использование

Параметры блоков: OutputParticles
Тип: Вектор символов
Значения: 'off', 'on'
По умолчанию: 'off'

Если вы выбираете этот параметр, порт выхода для весов частиц, используемых в оценке, Weights генерируется в блоке.

  • Если на StateOrientation параметр задается как 'column'затем веса частиц выводятся как вектор с 1-байтовым Np. Здесь, где каждый вес связан с частицей в том же столбце в Particles массив. Np - количество частиц, используемых для оценки состояния.

  • Если на StateOrientation параметр задается как 'row'затем веса частиц выводятся как вектор Np -by-1.

Программное использование

Параметры блоков: OutputWeights
Тип: Вектор символов
Значения: 'off', 'on'
По умолчанию: 'off'

Если вы выбираете этот параметр, ковариационный выходной порт ошибки расчета состояния, P генерируется в блоке.

Зависимости

Этот параметр доступен, если на вкладке Block outputs, Multirate, параметр State estimation method установлен на 'Mean'.

Программное использование

Параметры блоков: OutputStateCovariance
Тип: Вектор символов
Значения: 'off', 'on'
По умолчанию: 'off'

Когда этот параметр выбран, блок выводит исправленную оценку состояния x^[k|k] в временной шаг k, оцененный с использованием измеренных выходов до времени k. Если вы очистите этот параметр, блок вернёт предсказанную оценку состояния x^[k|k1] для временных k, оцененный с использованием измеренного выхода до предыдущего временного k-1. Очистите этот параметр, если ваш фильтр находится в цикле обратной связи, и в вашей модели Simulink есть алгебраический цикл.

Программное использование

Параметры блоков: UseCurrentEstimator
Тип: Вектор символов
Значения: 'on', 'off'
По умолчанию: 'on'
Мультиуровень

Выберите этот параметр, если шаги расчета переходного периода или любой из функций правдоподобия измерения отличаются от обратно.Вы задаете шаги расчета в вкладке Multirate, в Sample time.

Программное использование

Параметры блоков: EnableMultirate
Тип: Вектор символов
Значения: 'off', 'on'
По умолчанию: 'off'

Если шаги расчета для функций перехода и вероятности измерения различаются, задайте Sample time. Задайте шаги расчета для функций измерения как положительное целое число множителей переходного шага расчета состояния. Заданные вами шаги расчета соответствуют следующим входным портам:

  • Порты, соответствующие функции перехода состояния - Дополнительный вход в функцию перехода состояния StateTransitionFcnInputs. Шаги расчета этих портов должно всегда равняться шага расчета функции перехода состояния, но может отличаться от шага расчета функций правдоподобия измерения.

  • Порты, соответствующие ith функция правдоподобия измерения - Измеренный выход y i, дополнительный вход в функцию правдоподобия измерения MeasurementLikelihoodFcn iВходы, разрешающий сигнал в порте Enable i. Шаги расчета этих портов для одной и той же функции правдоподобия измерения должно всегда быть одинаковым, но может отличаться от шага расчета для функции перехода состояния и других функций правдоподобия измерения.

Зависимости

Этот параметр доступен, если на вкладке Block outputs, Multirate, параметр Enable multirate operation on.

Программное использование

Параметры блоков: StateTransitionFcnSampleTime, MeasurementLikelihoodFcn1SampleTime1, MeasurementLikelihoodFcn1SampleTime2, MeasurementLikelihoodFcn1SampleTime3, MeasurementLikelihoodFcn1SampleTime4, MeasurementLikelihoodFcn1SampleTime5
Тип: Вектор символов, строка
По умолчанию: '1'

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

.
Введенный в R2018a