exponenta event banner

Фильтр частиц

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

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

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

  • pf_block

Описание

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

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

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

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

Порты

Вход

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

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

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

Зависимости

Первый порт y1 доступен по умолчанию. Порты y2-y5 создаются при нажатии кнопки «Добавить измерение».

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

При создании f с использованием функции MATLAB ® (.m ), программа генерирует порт StateTransityFcnInputs при вводе имени функции и нажатии кнопки Apply.

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

Зависимости

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

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

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

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

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

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

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

Зависимости

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

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

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

Разрешить коррекцию оценочных состояний при наличии измеренных данных.

Например, учтите, что измеренные выходные данные не доступны во все моменты времени на порте y1, который соответствует первой функции правдоподобия измерения. Затем используйте значение сигнала, отличное от 0 на Enable1 порте для обеспечения возможности коррекции оценочных состояний при наличии измеренных данных. Укажите значение порта как 0 когда измеренные данные недоступны. Аналогично, если измеренные выходные данные недоступны во всех временных точках порта yi для i-ой функции правдоподобия измерения укажите соответствующий порт Enablei как значение, отличное от 0.

Зависимости

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

Продукция

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

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

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

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

Вывод ковариации ошибки возможен только при выборе ковариации оценки состояния вывода на Block outputs, Multirate tab и нажатии Apply.

Зависимости

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

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

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

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

Зависимости

Этот порт создается, если на вкладке Block outputs, Multirate (Многоскоростные) выбрать Output all particles (Вывод всех частиц) и нажать Apply (Применить).

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

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

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

Зависимости

Этот порт создается при выборе параметра «Выходные веса» на вкладке «Block outputs», «Multipate rate» и нажатии кнопки «Apply».

Параметры

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

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

Переход к состоянию

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

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

где, у частиц и particlesNext есть размеры Ns-by-Np, если государственная Ориентация определена как 'column'или Np-by-Ns, если ориентация состояния указана как 'row'. Также, param_i представляет необязательные входные аргументы, которые можно указать. Дополнительные сведения о дополнительных входных аргументах см. в разделе StateTransiveFcnInputs.

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

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

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

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

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

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

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

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

При выборе 'Gaussian', начальный набор частиц или гипотезы состояния распределяются по многомерному гауссову распределению, где задаются Среднее и Ковариация. Исходная масса всех частиц принимается равной.

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

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

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

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

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

Зависимости

Этот параметр доступен, если на вкладке Системная модель для параметра Распределение установлено значение Gaussian.

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

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

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

Если ковариация указана как:

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

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

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

Зависимости

Этот параметр доступен, если на вкладке Системная модель для параметра Распределение установлено значение Gaussian.

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

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

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

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

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

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

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

Если ориентация состояния указана как:

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

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

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

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

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

В i-ом ряду перечислены нижняя и верхняя границы равномерного распределения для начального распределения частиц i-го состояния.

Зависимости

Этот параметр доступен, если на вкладке Системная модель для параметра Распределение установлено значение Uniform.

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

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

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

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

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

Зависимости

Этот параметр доступен, если на вкладке Системная модель для параметра Распределение установлено значение Custom.

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

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

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

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

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

Зависимости

Этот параметр доступен, если на вкладке Системная модель для параметра Распределение установлено значение Custom.

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

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

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

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

Создайте функцию правдоподобия измерения и укажите имя функции в поле Функция. Например, если vdpMeasurementLikelihoodFcn.m функция правдоподобия измерения, созданная и сохраненная, укажите функцию как 'vdpMeasurementLikelihoodFcn'.

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

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

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

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

При наличии в системе нескольких датчиков можно указать несколько функций правдоподобия измерений. С помощью кнопки «Добавить измерение» можно указать до пяти функций правдоподобия измерений. Чтобы удалить функции правдоподобия измерения, используйте команду Удалить измерение.

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

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

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

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

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

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

  • 'Multinomial'

  • 'Systematic'

  • 'Stratified'

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

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

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

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

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

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

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

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

Зависимости

Этот параметр доступен, если на вкладке Модель системы для параметра Метод триггера установлено значение Ratio.

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

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

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

Зависимости

Этот параметр доступен, если на вкладке Модель системы для параметра Метод триггера установлено значение Interval.

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

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

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

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

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

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

Зависимости

Этот параметр доступен, если на вкладке Системная модель для параметра Случайность установлено значение 'Repeatable'.

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

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

Этот параметр используется для указания типа данных для всех параметров блока.

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

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

Время выборки блока, указанное как положительный скаляр.

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

Зависимости

Этот параметр доступен, если в продукции Блока, вкладке Multirate, Позволить операционный параметр мультиуровня off.

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

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

Блочные выходы, вкладка «Многоскоростные»

Продукция

Способ извлечения оценки состояния из частиц, указанный как одно из следующих:

  • 'Mean' - Блок фильтра частиц выводит средневзвешенное значение частиц в зависимости от параметров Вес и Частицы в качестве оценки состояния.

  • 'Maxweight' - Блок фильтра частиц выводит частицу с наибольшим весом, как оценка состояния.

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

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

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

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

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

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

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

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

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

  • Если StateOrientation параметр указан как 'column'затем массы частиц выводят в виде вектора 1-by-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 'k − 1] для времениk, оцененный с использованием измеренного выходного сигнала до предыдущего времени k-1. Снимите флажок, если фильтр находится в цикле обратной связи и в модели Simulink имеется алгебраический цикл.

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

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

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

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

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

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

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

  • Порты, соответствующие i-ой функции правдоподобия измерения - измеренный выход yi, дополнительный вход в функцию правдоподобия измерения MeasureFcniВходы, включение сигнала на порту Enablei. Время выборки этих портов для одной и той же функции правдоподобия измерения всегда должно быть одинаковым, но может отличаться от времени выборки для функции перехода состояния и других функций правдоподобия измерения.

Зависимости

Этот параметр доступен, если в продукции Блока, вкладке Multirate, Позволить операционный параметр мультиуровня on.

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

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

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

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