Пользовательский регрессор для нелинейных моделей ARX
C
=customreg(Function
,Variables
)
C
=customreg(Function
,Variables
,Delays
,Vectorized
)
Класс customreg
представляет произвольные функции прошлых вводов и выводов, такие как продукты, степени и другие выражения MATLAB® переменных ввода и вывода.
Можно задать пользовательские регрессоры в дополнение к или вместо стандартных регрессоров для большей гибкости в моделировании данных с помощью нелинейных моделей ARX. Например, можно задать регрессоры как загар (u (t-1)), u (t-1) 2 и u (t-1) *y (t-3).
Для более простых выражений регрессора задайте пользовательские регрессоры непосредственно в приложении или в команде оценки nlarx
. Для более сложных выражений создайте объект customreg
для каждого пользовательского регрессора и задайте эти объекты как входные параметры к оценке. Независимо от того, как вы задаете пользовательские регрессоры, тулбокс представляет эти регрессоры, когда customreg
возражает. Используйте getreg
, чтобы перечислить выражения всех стандартных и пользовательских регрессоров в вашей модели.
Особый случай пользовательских регрессоров включает полиномиальные комбинации прошлых вводов и выводов. Например, распространено получить нелинейность в системе с помощью многочленных выражений как y (t −1) 2, u (t −1) 2, y (t −2) 2, y (t −1) *y (t −2), y (t −1) *u (t −1), y (t − 2) *u (t −1). В командной строке используйте команду polyreg
, чтобы сгенерировать регрессоры полиномиального типа автоматически путем вычисления всех комбинаций переменных ввода и вывода до заданной степени. polyreg
производит объекты customreg
, которые вы задаете как входные параметры к оценке.
Нелинейная модель ARX (объект idnlarx
) хранит все пользовательские регрессоры как свойство CustomRegressors
. Можно перечислить все пользовательские регрессоры с помощью m.CustomRegressors
, где m
является нелинейной моделью ARX. Для моделей MIMO, чтобы получить r
th пользовательский регрессор для вывода ky
, m.CustomRegressors{ky}(r)
использования.
Используйте свойство Vectorized
задать, вычислить ли пользовательские регрессоры с помощью векторизованной формы во время оценки. Если вы знаете, что ваши формулы регрессора могут быть векторизованы, установите Vectorized
на 1
достигать лучшей производительности. Чтобы лучше понять векторизацию, считайте пользовательский указатель на функцию регрессора z=@(x,y)x^2*y
. x
и y
являются векторами, и каждая переменная оценена по сетке времени. Поэтому z
должен быть оценен для каждой пары (xi,yi)
, и результаты конкатенированы, чтобы произвести вектор z
:
for k = 1:length(x) z(k) = x(k)^2*y(k) end
Вышеупомянутое выражение является невекторизованным вычислением и имеет тенденцию быть медленным. Определение вычисления Vectorized
использует правила векторизации MATLAB, чтобы выполнить выражение регрессора с помощью матриц вместо FOR
- цикл и результаты в более быстром вычислении:
% ".*" indicates element-wise operation
z=(x.^2).*y
задает пользовательский регрессор для нелинейной модели ARX. C
=customreg(Function
,Variables
)C
является объектом customreg
, который хранит пользовательский регрессор. Function
является функцией переменных ввода и вывода. Variables
представляет имена входов и выходов модели в функциональном Function
. Каждое имя ввода и вывода должно совпасть со свойствами InputName
и OutputName
соответствующего объекта idnlarx
. Размер Variables
должен совпадать с количеством входных параметров Function
. Для нескольких - выходные модели с p
выходные параметры, пользовательским регрессором является p
-by-1 массив ячеек или массив объекта customreg
, где ky
th запись задает пользовательский регрессор для вывода ky
. Необходимо добавить эти регрессоры в model
путем присвоения свойства CustomRegressors
model
или при помощи addreg
.
создайте пользовательский регрессор, который включает задержки, соответствующие вводам или выводам в C
=customreg(Function
,Variables
,Delays
,Vectorized
)Arguments
. Delays
является вектором положительных целых чисел, которые представляют задержки переменных Variables
(значение по умолчанию 1 для каждого векторного элемента). Размер Delays
должен совпадать с размером Variables
. значение Vectorized
1
использует правила векторизации MATLAB, чтобы выполнить выражение регрессора Function
. По умолчанию значением Vectorized
является (FALSE) 0
.
После создания объекта можно использовать get
или запись через точку, чтобы получить доступ к значениям свойства объекта. Например:
% List all property values get(C) % Get value of Arguments property C.Arguments
Можно также использовать функцию set
, чтобы установить значение конкретных свойств. Например:
set(C,'Vectorized',1)
PropertyName | Описание |
---|---|
Function | Указатель на функцию или вектор символов, представляющий функцию регрессоров стандартов. Например: cr = @(x,y) x*y |
Variables | Массив ячеек из символьных векторов, которые представляют имена переменных входа и выхода модели в функциональном Например, C = customreg(cr,{'y1','u1'},[2 3]) |
Delays | Вектор положительных целых чисел, представляющих задержки Значение по умолчанию: Например, C = customreg(cr,{'y1','u1'},[2 3]) |
Vectorized | Присваиваемые значения:
|