exponenta event banner

recursiveBJ

Создать объект System для интерактивной оценки параметров модели полинома Бокса-Дженкинса

Синтаксис

obj = recursiveBJ
obj = recursiveBJ(Orders)
obj = recursiveBJ(Orders,B0,C0,D0,F0)
obj = recursiveBJ(___,Name,Value)

Описание

Использовать recursiveBJ команда для оценки параметров с данными реального времени. Если все данные, необходимые для оценки, доступны одновременно и выполняется оценка инвариантной по времени модели, используйте команду offline estimation, bj.

obj = recursiveBJ создает системный object™ для оперативной оценки параметров структуры модели полинома Дженкинса с одним входом и одним выходом (SISO) по умолчанию. Структура модели по умолчанию имеет многочлены порядка 1 и начальные значения коэффициентов многочленов eps.

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

obj = recursiveBJ(Orders) задает порядки полиномов модели Бокса-Дженкинса, которые должны быть оценены.

obj = recursiveBJ(Orders,B0,C0,D0,F0) задает порядки многочленов и начальные значения коэффициентов многочленов. Укажите начальные значения, чтобы потенциально избежать локальных минимумов во время оценки. Если начальные значения малы по сравнению со значениями по умолчанию InitialParameterCovariance значение свойства и уверенность в исходных значениях, также укажите меньшее InitialParameterCovariance.

obj = recursiveBJ(___,Name,Value) задает дополнительные атрибуты структуры модели Бокса-Дженкинса и алгоритм рекурсивной оценки с использованием одного или нескольких Name,Value аргументы пары.

Описание объекта

recursiveBJ создает объект System для оперативной оценки параметров моделей полинома SISO Box-Jenkins с использованием алгоритма рекурсивной оценки.

Системный объект - это специализированный объект MATLAB ®, разработанный специально для реализации и моделирования динамических систем с вводами, изменяющимися с течением времени. Системные объекты используют внутренние состояния для сохранения поведения в прошлом, которое используется на следующем шаге вычисления .

После создания объекта System используются команды для обработки данных или получения информации об объекте. Системные объекты используют минимум две команды для обработки данных - конструктор для создания объекта и step для обновления параметров объекта с использованием данных в реальном времени. Это разделение объявления от выполнения позволяет создавать несколько постоянных объектов многократного использования, каждый из которых имеет различные настройки.

С интерактивными объектами системы оценки в Toolbox™ Идентификация системы можно использовать следующие команды:

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

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

step переводит объект в заблокированное состояние. В заблокированном состоянии невозможно изменить неперестраиваемые свойства или входные спецификации, такие как порядок модели, тип данных или алгоритм оценки. Во время выполнения можно изменять только настраиваемые свойства.

release

Разблокируйте объект System. Эта команда используется для включения настройки неперестраиваемых параметров.

reset

Сбросьте внутренние состояния заблокированного объекта System до начальных значений и оставьте объект заблокированным.

clone

Создайте другой объект System с теми же значениями свойств объекта.

Не создавать дополнительные объекты с помощью синтаксиса obj2 = obj. Любые изменения свойств нового объекта, созданные таким образом (obj2) также изменить свойства исходного объекта (obj).

isLocked

Запрос заблокированного состояния для входных атрибутов и неперестраиваемых свойств объекта System.

Используйте recursiveBJ для создания оперативного объекта системы оценки. Затем оцените параметры модели полинома Бокса-Дженкинса (B, C, D, и F) и вывода с помощью step команда с входными и выходными данными, u и y.

[B,C,D,F,EstimatedOutput] = step(obj,y,u)

Для recursiveBJ свойства объекта см. в разделе Свойства.

Примеры

свернуть все

Создайте объект System для интерактивной оценки параметров модели полинома Бокса-Дженкинса.

obj = recursiveBJ;

Модель Бокса - Дженкинса имеет структуру по умолчанию с многочленами порядка 1 и начальными значениями коэффициентов полинома, eps.

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

load iddata1 z1;
output = z1.y;
input = z1.u;

Оценить параметры модели (Estimate Box) - Дженкинс (Jenkins model paramet step.

for i = 1:numel(input)
[B,C,D,F,EstimatedOutput] = step(obj,output(i),input(i));
end

Просмотр текущих расчетных значений полинома D коэффициенты.

obj.D
ans = 1×2

    1.0000   -0.6876

Просмотр текущей оценки ковариации параметров.

obj.ParameterCovariance
ans = 4×4

    0.0020   -0.0004   -0.0001    0.0002
   -0.0004    0.0007    0.0006   -0.0001
   -0.0001    0.0006    0.0007   -0.0000
    0.0002   -0.0001   -0.0000    0.0001

Просмотр текущего расчетного выходного сигнала.

EstimatedOutput
EstimatedOutput = -4.1905

Задать порядок (Specify Box) - порядок и задержки полиномной модели Дженкинса.

nb = 1;
nc = 1;
nd = 2;
nf = 1;
nk = 1;

Создайте системный объект для онлайн-оценки модели Бокса-Дженкинса с указанными заказами и задержками.

obj = recursiveBJ([nb nc nd nf nk]);

Задать порядок (Specify Box) - порядок и задержки полиномной модели Дженкинса.

nb = 1;
nc = 1;
nd = 1;
nf = 2;
nk = 1;

Создайте объект System для интерактивной оценки модели Бокса-Дженкинса с известными начальными полиномиальными коэффициентами.

B0 = [0 1];
C0 = [1 0.5];
D0 = [1 0.9];
F0 = [1 0.7 0.8];
obj = recursiveBJ([nb nc nd nf nk],B0,C0,D0,F0);

Укажите исходный параметр ковариации.

obj.InitialParameterCovariance = 0.1;

InitialParameterCovariance представляет неопределенность в вашем предположении для начальных параметров. Как правило, по умолчанию InitialParameterCovariance (10000) слишком велико относительно значений параметра. Это приводит к тому, что начальным догадкам уделяется меньше внимания во время оценки. Если вы доверяете начальным параметрам догадки, укажите меньший начальный параметр ковариации.

Создайте объект System, использующий алгоритм нормализованного градиента для оперативной оценки параметров модели Бокса-Дженкинса.

obj = recursiveBJ([1 1 1 2 1],'EstimationMethod','NormalizedGradient');

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

свернуть все

Порядок моделей и задержки полиномиальной модели Бокса-Дженкинса, заданной как вектор целых чисел 1 на 5, [nb nc nd nf nk].

  • nb - порядок многочлена B (q) + 1, определяемый как положительное целое число.

  • nc - порядок многочлена C (q), определяемый как неотрицательное целое число.

  • nd - порядок многочлена D (q), определяемый как неотрицательное целое число.

  • nf - порядок многочлена F (q), определяемый как неотрицательное целое число.

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

Начальное значение полиномиальных коэффициентов, определяемых как векторы строк вещественных значений с элементами в порядке возрастающих степеней q-1.

  • B0 - Начальное предположение для коэффициентов многочлена B (q), заданного как 1-by- (nb+nk) вектор с nk ведущие нули.

  • C0 - Начальное предположение для коэффициентов многочлена C (q), заданного как 1-by- (nc+1) вектор с 1 в качестве первого элемента.

    Коэффициенты в C0 должен определить стабильный дискретный полином времени с корнями внутри единичного диска. Например,

    C0 = [1 0.5 0.5];
    all(abs(roots(C0))<1)
    ans =
    
         1
    

  • D0 - Начальное предположение для коэффициентов многочлена D (q), заданного как 1-by- (nd+1) вектор с 1 в качестве первого элемента.

    Коэффициенты в D0 должен определить стабильный дискретный полином времени с корнями внутри единичного диска. Например,

    D0 = [1 0.9 0.8];
    all(abs(roots(D0))<1)
    ans =
    
         1
    

  • F0 - Начальное предположение для коэффициентов многочлена F (q), заданного как 1-by- (nf+1) вектор с 1 в качестве первого элемента.

    Коэффициенты в F0 должен определить стабильный дискретный полином времени с корнями внутри единичного диска. Например,

    F0 = [1 0.5 0.5];
    all(abs(roots(F0))<1)
    ans =
    
         1
    

Указание как [], использует значение по умолчанию eps для коэффициентов полинома.

Примечание

Если начальные догадки намного меньше, чем по умолчанию InitialParameterCovariance10000, начальные догадки имеют меньшее значение при оценке. В этом случае укажите меньшую ковариацию начального параметра.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Использовать Name,Value аргументы для указания доступных для записи свойств recursiveBJ Системный объект во время создания объекта. Например, obj = recursiveBJ([1 1 1 2 1],'EstimationMethod','Gradient') создает объект System для оценки модели полинома Бокса-Дженкинса с помощью 'Gradient' алгоритм рекурсивной оценки.

Свойства

recursiveBJ Свойства системного объекта состоят из свойств, доступных только для чтения и записи. Свойства, доступные для записи, настраиваются и не настраиваются. Неперестраиваемые свойства не могут быть изменены, когда объект заблокирован, то есть после использования step команда.

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

obj = recursiveBJ;
obj.ForgettingFactor = 0.99;

B

Оцененные коэффициенты многочлена B (q), возвращаемые как вектор вещественных значений, заданных в порядке возрастающих степеней q-1.

B является свойством, доступным только для чтения и первоначально пустым после создания объекта. Он заполняется после использования step команда для оперативной оценки параметров.

C

Оцененные коэффициенты многочлена C (q), возвращаемые как вектор вещественных значений, заданных в порядке возрастающих степеней q-1.

C является свойством, доступным только для чтения и первоначально пустым после создания объекта. Он заполняется после использования step команда для оперативной оценки параметров.

D

Оцененные коэффициенты многочлена D (q), возвращаемые как вектор вещественных значений, заданных в порядке возрастающих степеней q-1.

D является свойством, доступным только для чтения и первоначально пустым после создания объекта. Он заполняется после использования step команда для оперативной оценки параметров.

F

Оцененные коэффициенты многочлена F (q), возвращаемые как вектор вещественных значений, заданных в порядке возрастающих степеней q-1.

F является свойством, доступным только для чтения и первоначально пустым после создания объекта. Он заполняется после использования step команда для оперативной оценки параметров.

InitialB

Начальные значения коэффициентов многочлена B (q) порядкаnb-1, указанный как вектор строки длины nb+nk, с nk ведущие нули. nk - задержка ввода-вывода. Задайте коэффициенты в порядке возрастания степеней q-1.

Если начальные догадки намного меньше, чем по умолчанию InitialParameterCovariance10000, начальные догадки имеют меньшее значение при оценке. В этом случае укажите меньшую ковариацию начального параметра.

InitialB является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: [0 eps]

InitialC

Начальные значения коэффициентов многочлена C (q) порядкаnc, указанный как вектор строки длины nc+1, с 1 в качестве первого элемента. Задайте коэффициенты в порядке возрастания степеней q-1.

Коэффициенты в InitialC должен определить устойчивый дискретный полином времени с корнями в пределах единичной окружности. Например,

InitialC = [1 0.5 0.5];
all(abs(roots(InitialC))<1)
ans =

     1

Если начальные догадки намного меньше, чем по умолчанию InitialParameterCovariance10000, начальные догадки имеют меньшее значение при оценке. В этом случае укажите меньшую ковариацию начального параметра.

InitialC является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: [1 eps]

InitialD

Начальные значения коэффициентов многочлена D (q) порядкаnd, указанный как вектор строки длины nd+1, с 1 в качестве первого элемента. Задайте коэффициенты в порядке возрастания степеней q-1.

Коэффициенты в InitialD должен определить устойчивый дискретный полином времени с корнями в пределах единичной окружности. Например,

InitialD = [1 0.9 0.8];
all(abs(roots(InitialD))<1)
ans =

     1

Если начальные догадки намного меньше, чем по умолчанию InitialParameterCovariance10000, начальные догадки имеют меньшее значение при оценке. В этом случае укажите меньшую ковариацию начального параметра.

InitialD является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: [1 eps]

InitialF

Начальные значения коэффициентов многочлена F (q) порядкаnf, указанный как вектор строки длины nf+1, с 1 в качестве первого элемента. Задайте коэффициенты в порядке возрастания степеней q-1.

Коэффициенты в InitialF должен определить устойчивый дискретный полином времени с корнями в пределах единичной окружности. Например,

InitialF = [1 0.9 0.8];
all(abs(roots(InitialF))<1)
ans =

     1

Если начальные догадки намного меньше, чем по умолчанию InitialParameterCovariance10000, начальные догадки имеют меньшее значение при оценке. В этом случае укажите меньшую ковариацию начального параметра.

InitialF является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: [1 eps]

ParameterCovariance

Оценочная ковариация P из параметров, возвращаемых в виде N-на-N симметричной положительно-определенной матрицы. N - количество оцениваемых параметров. Вычисляет программное обеспечение P предполагая, что остатки (разность между оцененными и измеренными выходами) являются белым шумом, и дисперсия этих остатков равна 1. ParameterCovariance применима только тогда, когда EstimationMethod является 'ForgettingFactor' или 'KalmanFilter'.

Толкование P зависит от метода оценки:

  • 'ForgettingFactor'R2/2 * P приблизительно равна ковариационной матрице оцененных параметров, где R2 - истинная дисперсия остатков.

  • 'KalmanFilter'R2* P - ковариационная матрица оцененных параметров, а R1/ R2 - ковариационная матрица изменений параметров. Где R1 - матрица ковариации, указанная в ProcessNoiseCovariance.

ParameterCovariance является свойством, доступным только для чтения и первоначально пустым после создания объекта. Он заполняется после использования step команда для оперативной оценки параметров.

InitialParameterCovariance

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

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

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

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

InitialParameterCovariance представляет неопределенность в начальных оценках параметров. Для больших значений InitialParameterCovariance, меньшее значение придается начальным значениям параметров и больше - измеренным данным в начале оценки с использованием step.

Использовать только тогда, когда EstimationMethod является 'ForgettingFactor' или 'KalmanFilter'.

InitialParameterCovariance является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: 10000

EstimationMethod

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

  • 'ForgettingFactor' - Алгоритм, используемый для оценки параметров

  • 'KalmanFilter' - Алгоритм, используемый для оценки параметров

  • 'NormalizedGradient' - Алгоритм, используемый для оценки параметров

  • 'Gradient' - Ненормализованный алгоритм градиента, используемый для оценки параметров

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

EstimationMethod является неперестраиваемым свойством. Вы не можете изменить его во время выполнения, то есть после блокировки объекта с помощью step команда. Если требуется развернуть код с помощью MATLAB Coder™, EstimationMethod может быть назначено только один раз.

По умолчанию: 'ForgettingFactor'

ForgettingFactor

Коэффициент забывания λ, релевантный для оценки параметра, заданный как скаляр в диапазоне (0,1].

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

T0 = 11 − λ

  • Установка λ = 1 соответствует «без забывания» и оценке постоянных коэффициентов.

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

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

Использовать только тогда, когда EstimationMethod является 'ForgettingFactor'.

ForgettingFactor является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: 1

EnableAdapation

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

  • true или 1- step команда оценивает значения параметров для этого временного шага и обновляет значения параметров.

  • false или 0- step команда не обновляет параметры для этого временного шага и вместо этого выводит последнее оценочное значение. Эту опцию можно использовать при переходе системы в режим, в котором значения параметров не изменяются во времени.

    Примечание

    Если установить EnableAdapation кому false, вы все еще должны выполнить step команда. Не пропускать step для сохранения значений параметров постоянными, поскольку оценка параметров зависит от текущих и прошлых измерений ввода-вывода. step обеспечивает хранение прошлых данных ввода-вывода, даже если они не обновляют параметры.

EnableAdapation является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: true

DataType

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

  • 'double' - Плавающая точка с двойной точностью

  • 'single' - Плавающая точка с одинарной точностью

Настройка DataType кому 'single' экономит память, но приводит к потере точности. Определить DataType на основе точности, требуемой целевым процессором, в котором будет развернут сгенерированный код.

DataType является неперестраиваемым свойством. Его можно задать только во время построения объекта с помощью Name,Value аргументы и не могут быть изменены впоследствии.

По умолчанию: 'double'

ProcessNoiseCovariance

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

  • Вещественный неотрицательный скаляр, α - ковариационная матрица - диагональная матрица N-на-N, с α в качестве диагональных элементов.

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

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

N - количество оцениваемых параметров.

ProcessNoiseCovariance применяется, когда EstimationMethod является 'KalmanFilter'.

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

ProcessNoiseCovariance является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: 0.1

AdaptationGain

Коэффициент адаптации γ, используемый в алгоритмах градиентной рекурсивной оценки, определяемый как положительный скаляр.

AdaptationGain применяется, когда EstimationMethod является 'Gradient' или 'NormalizedGradient'.

Укажите большое значение для AdaptationGain когда измерения имеют высокое отношение сигнал/шум.

AdaptationGain является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: 1

NormalizationBias

Смещение в масштабировании адаптационного усиления, используемом в 'NormalizedGradient' метод, заданный как неотрицательный скаляр.

NormalizationBias применяется, когда EstimationMethod является 'NormalizedGradient'.

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

NormalizationBias является настраиваемым свойством. Его можно изменить, если объект находится в заблокированном состоянии.

По умолчанию: eps

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

свернуть все

Системный объект для оперативной оценки параметров модели полинома Бокса-Дженкинса, возвращаемый как recursiveBJ Системный объект. Этот объект создается с использованием указанных порядков и свойств модели. Использовать step для оценки коэффициентов полиномов модели Бокса-Дженкинса. Затем можно получить доступ к расчетным коэффициентам и ковариации параметров с помощью точечной нотации. Например, введите obj.F для просмотра оценочных коэффициентов полинома F.

Подробнее

свернуть все

Структура полиномиальной модели Бокса-Дженкинса

Общая структура модели Бокса-Дженкинса:

y (t) =∑i=1nuBi (q) Fi (q) ui (t nki) + C (q) D (q) e (t)

где nu - количество входных каналов.

Порядки модели Бокса-Дженкинса определяются следующим образом:

nb:  B (q) = b1 + b2q 1 +... + bnbq  − nb + 1nc: C (q) = 1 + c1q −  1 + + cncq nnd: D (q) =  1 + d1q 1 + + dndq ndnf: F (q) = 1 + f1q − 1 +... + fnfq

Совет

  • Начиная с R2016b, вместо использования step для обновления оценок параметров модели можно вызвать объект System с входными аргументами, как если бы это была функция. Например, [B,C,D,F,EstimatedOutput] = step(obj,y,u) и [B,C,D,F,EstimatedOutput] = obj(y,u) выполнять эквивалентные операции.

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

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