(не рекомендуется) Пользовательский регрессор для нелинейных моделей ARX
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 object) сохраняет все пользовательские регрессоры в качестве 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 объект, где kyВ-й записи определяется пользовательский регрессор для вывода ky. Необходимо добавить эти регрессоры в model путем назначения CustomRegressors model свойство или с помощью addreg.
создать пользовательский регрессор, который включает задержки, соответствующие входам или выходам в C=customreg(Function,Variables,Delays,Vectorized)Arguments. Delays является вектором положительных целых чисел, которые представляют задержки Variables переменные (по умолчанию - 1 для каждого векторного элемента). Размер Delays должен соответствовать размеру Variables. Vectorized значение 1 использует правила векторизации MATLAB для вычисления регрессорного выражения Function. По умолчанию Vectorized значение равно 0 (ложь).
После создания объекта можно использовать 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 | Присваиваемые значения:
|