Этот пример показывает, как оценить модель передаточной функции, когда структура ожидаемой модели известна и применить ограничения к коэффициентам числителя и знаменателя.
Загрузка данных во временной области.
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
term) не является оценочным параметром. Это ограничение заставляет один из предполагаемых полюсов находиться на s = 0
.
Создайте набор опций оценки, который задает с помощью метода поиска Левенберга-Марквардта.
opt = tfestOptions('SearchMethod','lm');
Оцените передаточную функцию для z1
использование init_sys
и набор опций оценки.
sys = tfest(z1,init_sys,opt);
tfest
использует коэффициенты init_sys
для инициализации оценки sys
. Кроме того, оценка ограничена ограничениями, которые вы задаете в Structure
свойство init_sys
. Результат idtf
модели sys
содержит значения параметров, которые являются результатом оценки.