Recursive Least Squares Estimator

Оцените коэффициенты модели с помощью алгоритма рекурсивных наименьших квадратов (RLS)

  • Библиотека:
  • System Identification Toolbox / средства оценки

  • Recursive Least Squares Estimator block

Описание

Recursive Least Squares Estimator оценивает параметры системы с помощью модели, которая линейна в тех параметрах. Такая система имеет следующую форму:

y(t)=H(t)θ(t).

y и H являются известными количествами, которые вы предоставляете блоку, чтобы оценить θ. Блок может предоставить и бесконечную историю [1] и конечную историю [2] (также известный как раздвижное окно), оценки для θ. Для получения дополнительной информации об этих методах смотрите Рекурсивные алгоритмы для Онлайновой Оценки Параметра.

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

  • Основанный на выборке или основанный на системе координат формат данных — Видит параметр Input Processing.

  • История Бога или конечный - оценка истории — Видит параметр History.

  • Несколько методов оценки бесконечной истории — Видят параметр Estimation Method.

  • Начальные условия, включите флаг и сбросьте триггер — Смотрите Initial Estimate, Add enable port и параметры External Reset.

Для данного временного шага t, y (t) и H (t) соответствует Output и импорту Regressors блока Recursive Least Squares Estimator, соответственно. θ (t) соответствует выходному порту Parameters.

Например, предположите, что вы хотите оценить скалярное усиление, θ, в системе y = h2θ. Здесь, y линеен относительно θ. Можно использовать блок Recursive Least Squares Estimator, чтобы оценить θ. Задайте y и h2 как вводит к импорту Regressor и Output.

Порты

Входной параметр

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

Входной сигнал регрессоров H (t). Input Processing и параметры Number of Parameters задают размерности сигнала:

  • Основанная на выборке входная обработка и N оценили параметры — 1 N вектором

  • Основанная на системе координат входная обработка с выборками M на систему координат и N оценила параметры — M-by-N матрица

Типы данных: single | double

Измеренный выходной сигнал y (t). Параметр Input Processing задает размерности сигнала:

  • Основанная на выборке входная обработка — Скаляр

  • Основанная на системе координат входная обработка с выборками M на систему координат — M-by-1 вектор

Типы данных: single | double

Внешний сигнал, который позволяет вам включать и отключать обновления оценки. Если значение сигналов:

  • true — Оцените и выведите значения параметров для временного шага.

  • false — Не оценивайте значения параметров и выводите новую ранее ориентировочную стоимость.

Зависимости

Чтобы включить этот порт, выберите параметр Add enable port.

Типы данных: single | double | Boolean | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32

Сбросьте оценку параметра ее начальными условиями. Значение параметра External reset определяет триггерный тип. Триггерный тип диктует, происходит ли сброс на сигнале, который повышается, падение, или повышение или падение, уровень, или на уровне содержит.

Зависимости

Чтобы включить этот порт, выберите любую опцию кроме None в External reset выпадают.

Типы данных: single | double | Boolean | int8 | int16 | int32 | uint8 | uint16 | uint32

Начальные оценки параметра, предоставленные из источника, внешнего с блоком. Блок использует этот импорт в начале симуляции или когда вы инициировали сброс алгоритма с помощью сигнала Reset.

Параметр Number of Parameters задает размерности сигнала. Если существуют параметры N, сигналом является N-by-1.

Зависимости

Чтобы включить этот порт, установите History на Infinite и Initial Estimate к External.

Типы данных: single | double

Начальные ковариации параметра, предоставленные из источника, внешнего с блоком. Для получения дополнительной информации смотрите параметр Parameter Covariance Matrix. Блок использует этот импорт в начале симуляции или когда вы инициировали сброс алгоритма с помощью сигнала Reset.

Зависимости

Чтобы включить этот порт, установите следующие параметры:

  • History к Infinite

  • Estimation Method к Forgetting Factor или Kalman Filter

  • Initial Estimate к External

Типы данных: single | double

Начальные значения регрессоров в окне исходных данных при использовании конечной истории (раздвижное окно) оценка, предоставленная из внешнего источника. W параметра Window length и параметр Number of Parameters, N задает размерности этого сигнала, который является W-by-N.

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

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

Зависимости

Чтобы включить этот порт, установите History на Finite и Initial Estimate к External.

Типы данных: single | double

Начальный набор выходных измерений при использовании конечной истории (раздвижное окно) оценка, предоставленная из внешнего источника. Сигналом к этому порту должен быть W-by-1 вектор, где W является длиной окна.

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

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

Зависимости

Чтобы включить этот порт, установите History на Finite, и Initial Estimate к External.

Типы данных: single | double

Вывод

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

Предполагаемый θ параметров (t), возвращенный как N-by-1 вектор, где N является количеством параметров.

Типы данных: single | double

Ошибка расчета, возвращенная как:

  • Скаляр — Основанная на выборке входная обработка

  • M-by-1 вектор — Основанная на системе координат входная обработка с выборками M на систему координат

Зависимости

Чтобы включить этот порт, выберите параметр Output estimation error.

Типы данных: single | double

P ковариации ошибки расчета параметра, возвращенный как N-by-N матрица, где N является количеством параметров. Для получения дополнительной информации смотрите параметр Output Parameter Covariance Matrix.

Зависимости

Включить этот порт:

  • Если History является Infinite, установите Estimation Method на Forgetting Factor или Kalman Filter.

  • Является ли History Infinite или Finite, выберите параметр Output parameter covariance matrix.

Типы данных: single | double

Параметры

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

Параметры модели

Задайте, как предоставить начальные оценки параметра блоку:

  • None — Не задавайте первоначальные оценки.

    • Если History является Infinite, блок использует 1 как начальная оценка параметра.

    • Если History является Finite, блок вычисляет начальные оценки параметра от начального Regressors и сигналов Outputs.

    Задайте Number of Parameters, и также, если History является Infinite, Parameter Covariance Matrix.

  • Internal — Задайте начальные оценки параметра внутренне с блоком

    • Если History является Infinite, задайте параметры Parameter Covariance Matrix и Initial Parameter Values.

    • Если History является Finite, задайте Number of Parameters, Initial Regressors и параметры Initial Outputs.

  • External — Задайте начальные оценки параметра как входной сигнал с блоком.

    Задайте параметр Number of Parameters. Ваша установка для параметра History определяет который дополнительные сигналы соединиться с соответствующими портами:

    • Если History является InfiniteInitialParameters и InitialCovariance

    • Если History является FiniteInitialRegressors и InitialOutputs

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

Параметры блоков: InitialEstimateSource
Ввод: вектор символов, строка
Значения: 'None', 'Internal', 'External'
Значение по умолчанию: 'None'

Задайте количество параметров, чтобы оценить в модели, равной числу элементов в параметре θ (t) вектор.

Зависимости

Чтобы включить этот параметр, установите также:

  • History к Infinite и Initial Estimate к любому None или External

  • History к Finite

Альтернативный способ задать количество параметров, которые N, чтобы оценить при помощи параметра Initial Parameter Values, для которого вы задаете вектор первоначальной оценки с элементами N. Этот подход покрывает одну остающуюся комбинацию, где History является Infinite и Initial Estimate является Internal. Для получения дополнительной информации смотрите Initial Parameter Values.

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

Параметры блоков: InitialParameterData
Ввод: положительное целое число
Значение по умолчанию: 2

Задайте Parameter Covariance Matrix как a:

  • Действительная положительная скалярная величина, α — Ковариационной матрицей является N-by-N диагональная матрица с α как диагональные элементы.

  • Вектором из действительных положительных скалярных величин, [α 1..., α N] — Ковариационная матрица является N-by-N диагональная матрица, с [α 1..., α N] как диагональные элементы.

  • N-by-N симметричная положительно-определенная матрица.

Здесь, N является количеством параметров, которые будут оценены.

Зависимости

Чтобы включить этот параметр, установите следующие параметры:

  • History к Infinite

  • Initial Estimate к None или Internal

  • Estimation Method к Forgetting Factor или Kalman Filter

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

Параметры блоков: P0
Ввод: скаляр, вектор или матрица
Значение по умолчанию: 1e4

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

Зависимости

Чтобы включить этот параметр, установите History на Infinite и Initial Estimate к Internal.

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

Параметры блоков: InitialParameterData
Ввод: вектор действительных чисел
Значение по умолчанию: [1 1]

Задайте начальные значения буфера регрессоров при использовании конечной истории (раздвижное окно) оценка. W параметра Window length и параметр Number of Parameters, N задает размерности буфера регрессоров, который является W-by-N.

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

Когда начальное значение установлено к 0, блок заполняет буфер с нулями.

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

Зависимости

Чтобы включить этот параметр, установите History на Finite и Initial Estimate к Internal.

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

Параметры блоков: InitialRegressors
Ввод: действительная матрица
Значение по умолчанию: 0

Задайте начальные значения измеренного выходного буфера при использовании конечной истории (раздвижное окно) оценка. Этим параметром является W-by-1 вектор, где W является длиной окна.

Когда начальное значение установлено к 0, блок заполняет буфер с нулями.

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

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

Зависимости

Чтобы включить этот параметр, установите History на Finite и Initial Estimate к Internal .

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

Параметры блоков: InitialOutputs
Ввод: вектор действительных чисел
Значение по умолчанию: 0
Введите время вычислений и шаг расчета
  • Sample-based обработка работает с сигналами, передал одну выборку потоком за один раз.

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

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

  • Regressors

  • Output

  • Error

Для получения дополнительной информации см. описания порта в Портах.

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

Параметры блоков: InputProcessing
Ввод: вектор символов, строка
Значения: 'Sample-based', 'Frame-based'
Значение по умолчанию: 'Sample-based'

Задайте шаг расчета данных, ли отдельными выборками для основанной на выборке обработки (ts), или системами координат для основанной на системе координат обработки (tf = M ts), где M является длиной системы координат. Когда вы устанавливаете Sample Time на его значение по умолчанию-1, блок наследовал свой ts или tf на основе сигнала.

Задайте Sample Time как положительную скалярную величину, чтобы заменить наследование.

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

Параметры блоков: Ts
Ввод: действительный скаляр
Значение по умолчанию: -1

Алгоритм и опции блока

Опции алгоритма

Параметр History определяет, какой рекурсивный алгоритм вы используете:

  • Infinite — Алгоритмы в этой категории стремятся производить оценки параметра, которые объясняют все данные начиная с запуска симуляции. Эти алгоритмы сохраняют историю в сводных данных данных. Блок обеспечивает эти сводные данные в установленной сумме памяти, которая не растет в зависимости от времени.

    Блок предоставляет несколько алгоритмов Infinite ввод. Выбирание этой опции включает параметр Estimation Method, которым вы задаете алгоритм.

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

    Выбирание этой опции включает параметр Window Length, это измеряет раздвижное окно.

Для получения дополнительной информации о рекурсивных методах оценки смотрите Рекурсивные алгоритмы для Онлайновой Оценки Параметра

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

Параметры блоков: History
Ввод: вектор символов, строка
Значения: 'Infinite', 'Finite'
Значение по умолчанию: 'Infinite'

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

Window Length должен быть больше или быть равен количеству предполагаемых параметров.

Подходящая длина окна независима от того, используете ли вы основанную на выборке или основанную на системе координат входную обработку. Однако при использовании основанной на системе координат обработки, Window Length должен быть больше или быть равен количеству отсчетов (временные шаги), содержавшиеся в системе координат.

Зависимости

Чтобы включить этот параметр, установите History на Finite.

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

Параметры блоков: WindowLength
Ввод: положительное целое число
Значение по умолчанию: 200

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

Упущение фактора и алгоритмов Фильтра Калмана более в вычислительном отношении интенсивно, чем градиент и нормированные градиентные методы. Однако эти более интенсивные методы имеют лучшие свойства сходимости, чем градиентные методы. Для получения дополнительной информации об этих алгоритмах, смотрите Рекурсивные алгоритмы для Онлайновой Оценки Параметра.

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

Параметры блоков: EstimationMethod
Ввод: вектор символов, строка
Значения: 'Forgetting Factor', 'Kalman Filter', 'Normalized Gradient'градиент
Значение по умолчанию: 'Forgetting Factor'

Забывающий факторный λ задает, если и сколько старых данных обесценено по оценке. Предположим, что система остается приблизительно постоянной по выборкам T0. Можно выбрать λ, таким образом что:

T0=11λ

  • Установка λ = 1 не соответствует “никакому упущению” и оценке постоянных коэффициентов.

  • Установка λ <1 подразумевает, что прошлые измерения являются менее значительными для оценки параметра и могут быть “забыты”. Установите λ <1 оценивать изменяющиеся во времени коэффициенты.

Типичный выбор λ находится в [0.98 0.995] область значений.

Зависимости

Чтобы включить этот параметр, установите History на Infinite и Estimation Method к Forgetting Factor.

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

Параметры блоков: AdaptationParameter
Ввод: скаляр
Значения: (0 1] область значений
Значение по умолчанию: 1

Process Noise Covariance предписывает элементы и структуру шумовой ковариационной матрицы для оценки Фильтра Калмана. Используя N как количество параметров, чтобы оценить, задайте Process Noise Covariance как одно из следующего:

  • Действительный неотрицательный скаляр, α — Ковариационной матрицей является N-by-N диагональная матрица с α как диагональные элементы.

  • Вектором из действительных неотрицательных скаляров, [α 1..., α N] — Ковариационная матрица является N-by-N диагональная матрица, с [α 1..., α N] как диагональные элементы.

  • N-by-N симметричная положительная полуопределенная матрица.

Алгоритм Фильтра Калмана обрабатывает параметры как состояния динамической системы и оценивает эти параметры с помощью Фильтра Калмана. Process Noise Covariance является ковариацией шума процесса, действующего на эти параметры. Нулевые значения в шумовой ковариационной матрице соответствуют постоянным коэффициентам или параметрам. Значения, больше, чем 0, соответствуют изменяющимся во времени параметрам. Используйте большие значения для того, чтобы быстро изменить параметры. Однако ожидайте, что большие значения приведут к более шумным оценкам параметра. Значение по умолчанию равняется 1.

Зависимости

Чтобы включить этот параметр, установите History на Infinite и Estimation Method к Kalman Filter.

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

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

Усиление адаптации γ масштабирует влияние новых данных об измерении по результатам оценки для градиента и нормированных градиентных методов. Когда ваши измерения защищены, или другими словами имеют высокое отношение сигнал-шум, задают большее значение для γ. Однако установка γ слишком высоко может заставить оценки параметра отличаться. Это расхождение возможно, даже если измерения являются свободным шумом.

Когда Estimation Method является NormalizedGradient, Adaptation Gain должен быть меньше 2. С любым градиентным методом, если ошибки растут вовремя (другими словами, оценка отличается), или оценками параметра переходят вокруг часто, рассматривают уменьшающий Adaptation Gain.

Зависимости

Чтобы включить этот параметр, установите History на Infinite и Estimation Method к Normalized Gradient или к Gradient.

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

Параметры блоков: AdaptationParameter
Ввод: скаляр
Значение по умолчанию: 1

Нормированный алгоритм градиента масштабирует усиление адаптации на каждом шаге квадратом 2D нормы вектора градиента. Если градиент близко к нулю, почти нулевой знаменатель может вызвать скачки в предполагаемых параметрах. Normalization Bias является термином, введенным к знаменателю, чтобы предотвратить эти скачки. Увеличьте Normalization Bias, если вы наблюдаете скачки в предполагаемых параметрах.

Зависимости

Чтобы включить этот параметр, установите History на Infinite и Estimation Method к Normalized Gradient.

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

Параметры блоков: NormalizationBias
Ввод: скаляр
Значение по умолчанию: eps
Блокируйте опции

Используйте сигнал выходного порта Error подтвердить оценку. Для данного временного шага t ошибка расчета e (t) вычисляется как:

e(t)=y(t)yest(t),

где y (t) является измеренный выход, который вы обеспечиваете, и yest (t) является предполагаемый выход с помощью регрессоров, H (t) и параметр оценивает θ (t-1).

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

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

Используйте сигнал выходного порта Covariance исследовать неопределенность оценки параметра. Программное обеспечение вычисляет ковариацию параметра P предположение, что остаточные значения, e (t), являются белым шумом, и отклонение этих остаточных значений равняется 1.

Интерпретация P зависит от подхода оценки, который вы задаете в History и Estimation Method можно следующим образом:

  • Если History является Infinite, затем ваш выбор Estimation Method приводит к:

    • Forgetting Factor — (R2 /2P приблизительно равно ковариационной матрице предполагаемых параметров, где R2 является истинным отклонением остаточных значений. Блок выводит остаточные значения в порте Error.

    • Kalman FilterR2 P ковариационная матрица предполагаемых параметров, и R1/R2 является ковариационной матрицей изменений параметра. Здесь, R1 является ковариационной матрицей, которую вы задаете в Parameter Covariance Matrix.

    • Normalized Gradient или Gradient — Ковариация P не доступна.

  • Если History является Finite (оценка раздвижного окна) — R2 P является ковариацией предполагаемых параметров. Алгоритм раздвижного окна не использует эту ковариацию в процессе оценки параметра. Однако алгоритм действительно вычисляет ковариацию для выхода так, чтобы можно было использовать его для статистической оценки.

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

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

Используйте сигнал Enable обеспечить управляющий сигнал, который включает или отключает оценку параметра. Блок оценивает значения параметров для каждого временного шага, который включена оценка параметра. Если вы отключаете оценку параметра на данном шаге, t, то программное обеспечение не обновляет параметры для того временного шага. Вместо этого блок выводит последние предполагаемые значения параметров.

  • Можно использовать эту опцию, например, когда или если:

    • Ваши регрессоры или выходной сигнал становятся слишком шумными, или не содержат информацию на некоторых временных шагах

    • Ваша система переходит к режиму, где значения параметров не изменяются вовремя

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

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

Установите параметр External reset, чтобы и добавить, что Reset импортирует и задает условие сигнала импорта, которое инициировало сброс алгоритма, утверждает к их заданным начальным значениям. Сбросьте оценку, например, если ковариация параметра становится слишком большой из-за отсутствия или достаточного возбуждения или информации в измеренных сигналах.

Предположим, что вы сбрасываете блок на временном шаге, t. Если блок включен в t, программное обеспечение использует начальные значения параметров, заданные в Initial Estimate, чтобы оценить значения параметров. Другими словами, в t, блок выполняет обновление параметра с помощью первоначальной оценки и текущих значений импорта.

Если блок отключен в t, и вы сбрасываете блок, блок выводит значения, заданные в Initial Estimate.

Задайте эту опцию как одно из следующего:

  • None — Состояния алгоритма и оцененные параметры не сбрасываются.

  • Rising — Триггерный сброс, когда управляющий сигнал повышается с отрицательной величины или нулевого значения к положительному значению. Если начальное значение отрицательно, повышаясь, чтобы обнулить триггерный сброс.

  • Falling — Триггерный сброс, когда управляющий сигнал падает от положительного или нулевого значения к отрицательной величине. Если начальное значение положительно, падая на нулевой триггерный сброс.

  • Either — Триггерный сброс, когда управляющий сигнал или повышается или падает.

  • Level — Триггер сбросил в любом из этих случаев:

    • Управляющий сигнал является ненулевым на шаге текущего времени.

    • Управляющий сигнал изменяется от ненулевого на предыдущем временном шаге, чтобы обнулить на шаге текущего времени.

  • Level hold — Триггерный сброс, когда управляющий сигнал является ненулевым на шаге текущего времени.

Когда вы выбираете любую опцию кроме None, программное обеспечение добавляет, что Сброс импортирует с блоком. Вы предоставляете входной сигнал управления сбросом этому импорту.

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

Параметры блоков: ExternalReset
Ввод: вектор символов, строка
Значения: 'None', 'Rising', 'Falling', 'Either', 'Level', 'Level hold'
Значение по умолчанию: 'None'

Ссылки

[1] Ljung, L. System Identification: Теория для Пользователя. Верхний Сэддл-Ривер, NJ: PTR Prentice Hall, 1999, стр 363–369.

[2] Чжан, Q. "Некоторые Аспекты Реализации Алгоритмов Наименьших квадратов Раздвижного окна". Продолжения IFAC. Издание 33, Выпуск 15, 2000, стр 763-768.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.

Генерация кода PLC
Сгенерируйте код Структурированного текста с помощью Simulink® PLC Coder™.

Введенный в R2014a