(Не рекомендуемый) Пользовательский регрессор для нелинейных моделей 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, чтобы извлечь rth пользовательский регрессор для выходных 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 объект, где kyth 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 | Присваиваемые значения:
|