(Не рекомендуемый) Пользовательский регрессор для нелинейных моделей ARX
The customreg
команда не рекомендуется. Для полиномиальных регрессоров используйте polynomialRegressor
вместо этого. Для других пользовательских регрессоров используйте customRegressor
. Для получения дополнительной информации см. раздел Вопросов совместимости.
C
=customreg(Function
,Variables
)
C
=customreg(Function
,Variables
,Delays
,Vectorized
)
customreg
класс представляет произвольные функции прошлых входов и выходов, такие как продукты, степени и другие MATLAB® выражения входа и выхода переменных.
Можно задать пользовательские регрессоры в сложение или вместо стандартных регрессоров для большей гибкости в моделировании данных с помощью нелинейных моделей ARX. Для примера можно задать регрессоры, такие как tan (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 entry определяет пользовательский регрессор для выхода ky
. Вы должны добавить эти регрессоры к model
путем назначения CustomRegressors
model
свойство или при помощи addreg
.
создайте пользовательский регрессор, который включает задержки, соответствующие входам или выходам в C
=customreg(Function
,Variables
,Delays
,Vectorized
)Arguments
. Delays
является вектором положительных целых чисел, которые представляют задержки Variables
переменные (по умолчанию это 1 для каждого векторного элемента). Размер Delays
должен совпадать с размером Variables
. Vectorized
значение 1
использует правила векторизации MATLAB, чтобы вычислить выражение регрессора Function
. По умолчанию Vectorized
значение 0
(false).
После создания объекта можно использовать get
или запись через точку для доступа к значениям свойств объекта. Для примера:
% List all property values get(C) % Get value of Arguments property C.Arguments
Вы также можете использовать set
функция для задания значения конкретных свойств. Для примера:
set(C,'Vectorized',1)
Имя свойства | Описание |
---|---|
Function | Указатель на функцию или вектор символов, представляющий функцию регрессоров стандартов. Для примера: cr = @(x,y) x*y |
Variables | Массив ячеек из символьных векторов, которые представляют имена входных и выходных переменных модели в функции Для примера, C = customreg(cr,{'y1','u1'},[2 3]) |
Delays | Вектор положительных целых чисел, представляющих задержки По умолчанию: Для примера, C = customreg(cr,{'y1','u1'},[2 3]) |
Vectorized | Присваиваемые значения:
|