Этот пример показывает, как оценить модель передаточной функции, когда структура ожидаемой модели известна, и примените ограничения к коэффициентам знаменателя и числителю.
Загрузите данные временного интервала.
load iddata1 z1; z1.y = cumsum(z1.y);
cumsum
интегрирует выходные данные z1
. Предполагаемая передаточная функция должна поэтому содержать интегратор.
Создайте модель передаточной функции с ожидаемой структурой.
init_sys = idtf([100 1500],[1 10 10 0]);
int_sys
является моделью idtf
с тремя полюсами и одним нулем. Коэффициент знаменателя для термина s^0
является нулем, который указывает, что int_sys
содержит интегратор.
Задайте ограничения на числитель и коэффициенты знаменателя модели передаточной функции. Для этого сконфигурируйте поля в свойстве Structure
:
init_sys.Structure.Numerator.Minimum = eps; init_sys.Structure.Denominator.Minimum = eps; init_sys.Structure.Denominator.Free(end) = false;
Ограничения указывают, что числитель и коэффициенты знаменателя являются неотрицательными. Кроме того, последний элемент коэффициентов знаменателя (сопоставленный с термином s^0
) не является допускающим оценку параметром. Это ограничение обеспечивает один из предполагаемых полюсов, чтобы быть в s = 0
.
Создайте набор опции оценки, который задает использование метода поиска Levenberg–Marquardt.
opt = tfestOptions('SearchMethod','lm');
Оцените передаточную функцию для z1
с помощью init_sys
и набора опции оценки.
sys = tfest(z1,init_sys,opt);
tfest
использует коэффициенты init_sys
, чтобы инициализировать оценку sys
. Кроме того, оценка ограничивается ограничениями, которые вы задаете в свойстве Structure
init_sys
. Получившийся sys
модели idtf
содержит значения параметров, которые следуют из оценки.