Перед выполнением этой задачи необходимо иметь
Данные ввода-вывода как iddata объект или данные частотной характеристики frd или idfrd объекты. См. раздел Представление данных временной и частотной области с использованием объектов iddata. Поддерживаемые форматы данных см. в разделе Данные, поддерживаемые моделями процессов.
Выполнение всех необходимых операций предварительной обработки данных. При работе с данными временной области, если необходимо моделировать ненулевые смещения, например, когда модель содержит поведение интеграции, не уменьшайте качество данных. В других случаях для повышения точности модели необходимо уменьшить количество данных. См. Способы подготовки данных для идентификации системы.
Можно оценить модели процессов с помощью итеративного метода оценки. procest это минимизирует ошибки прогнозирования для получения оценок максимального правдоподобия. Полученные модели сохраняются как idproc объекты модели.
Для настройки и оценки моделей процессов можно использовать следующий общий синтаксис:
m = procest(data,mod_struc,opt)
data - оценочные данные и mod_struc является одним из следующих:
Вектор символов, представляющий структуру модели процесса, как описано в разделе Спецификация структуры модели процесса.
Шаблон idproc модель. opt - набор опций для конфигурирования оценки модели процесса, такой как обработка начальных условий, смещение ввода и метод численного поиска.
Совет
Нет необходимости создавать объект модели с помощью idproc перед оценкой, если не требуется указать начальные догадки параметров, минимальные/максимальные границы или фиксированные значения параметров, как описано в разделе Оценка моделей процесса с фиксированными параметрами.
Дополнительные сведения о проверке модели процесса см. в разделе Проверка моделей после оценки.
Вы можете использовать procest для уточнения оценок параметров существующей модели процесса, как описано в разделе Уточнение линейных параметрических моделей.
В этом примере показано, как оценить параметры модели процесса первого заказа:
sTp1e-sTd
Этот процесс имеет два входа, и отклик от каждого входа оценивается моделью процесса первого порядка. Все параметры могут свободно изменяться.
Данные оценки нагрузки.
load co2dataУкажите известное время выборки 0,5 мин.
Ts = 0.5;
Разбить набор данных на оценочные данные ze и данные проверки zv.
ze = iddata(Output_exp1,Input_exp1,Ts,... 'TimeUnit','min'); zv = iddata(Output_exp2,Input_exp2,Ts,... 'TimeUnit','min');
Оценка модели с одним полюсом, задержкой и компонентом возмущения первого порядка. Данные содержат известные смещения. Укажите их с помощью InputOffset и OutputOffset варианты.
opt = procestOptions; opt.InputOffset = [170;50]; opt.OutputOffset = -45; opt.Display = 'on'; opt.DisturbanceModel = 'arma1'; m = procest(ze,'p1d',opt)
m =
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2
From input "u1" to output "y1":
Kp
G11(s) = ---------- * exp(-Td*s)
1+Tp1*s
Kp = 2.6553
Tp1 = 0.15515
Td = 2.3175
From input "u2" to output "y1":
Kp
G12(s) = ---------- * exp(-Td*s)
1+Tp1*s
Kp = 9.9756
Tp1 = 2.0653
Td = 4.9195
An additive ARMA disturbance model exists for output "y1":
y = G u + (C/D)e
C(s) = s + 2.676
D(s) = s + 0.6228
Parameterization:
{'P1D'} {'P1D'}
Number of free coefficients: 8
Use "getpvec", "getcov" for parameters and their uncertainties.
Status:
Estimated using PROCEST on time domain data "ze".
Fit to estimation data: 91.07% (prediction focus)
FPE: 2.431, MSE: 2.412
Используйте точечную нотацию для получения значения любого параметра модели. Например, получить значение параметра усиления постоянного тока Kp .
m.Kp
ans = 1×2
2.6553 9.9756
В этом примере показано, как оценить модель процесса с фиксированными параметрами.
Если известны значения определенных параметров в модели и требуется оценить только неизвестные значения, необходимо указать фиксированные параметры после создания idproc объект модели. Для подготовки данных и построения модели процесса с одним полюсом и задержкой используются следующие команды:
Данные оценки нагрузки.
load co2dataУкажите известное время выборки 0,5 минут.
Ts = 0.5;
Разбить набор данных на оценочные данные ze и данные проверки zv.
ze = iddata(Output_exp1,Input_exp1,Ts,... 'TimeUnit','min'); zv = iddata(Output_exp2,Input_exp2,Ts,... 'TimeUnit','min'); mod = idproc({'p1d','p1d'},'TimeUnit','min')
mod =
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2
From input 1 to output 1:
Kp
G11(s) = ---------- * exp(-Td*s)
1+Tp1*s
Kp = NaN
Tp1 = NaN
Td = NaN
From input 2 to output 1:
Kp
G12(s) = ---------- * exp(-Td*s)
1+Tp1*s
Kp = NaN
Tp1 = NaN
Td = NaN
Parameterization:
{'P1D'} {'P1D'}
Number of free coefficients: 6
Use "getpvec", "getcov" for parameters and their uncertainties.
Status:
Created by direct construction or transformation. Not estimated.
Параметры модели Kp , Tp1 , и Td назначены NaN значения, что означает, что параметры еще не были оценены по данным.
Используйте Structure свойство модели для указания начальных предположений для неизвестных параметров, границ минимального/максимального параметров и фиксации известных параметров.
Установка значения Kp для второй передаточной функции 10 и укажите его в качестве фиксированного параметра. Инициализируйте значения задержки для двух функций передачи на 2 и 5 минут соответственно. Укажите их как свободные параметры оценки.
mod.Structure(2).Kp.Value = 10; mod.Structure(2).Kp.Free = false; mod.Structure(1).Tp1.Value = 2; mod.Structure(2).Td.Value = 5;
Оценка Tp1 и Td только.
mod_proc = procest(ze,mod)
mod_proc =
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2
From input "u1" to output "y1":
Kp
G11(s) = ---------- * exp(-Td*s)
1+Tp1*s
Kp = -3.2213
Tp1 = 2.1707
Td = 4.44
From input "u2" to output "y1":
Kp
G12(s) = ---------- * exp(-Td*s)
1+Tp1*s
Kp = 10
Tp1 = 2.0764
Td = 4.5205
Parameterization:
{'P1D'} {'P1D'}
Number of free coefficients: 5
Use "getpvec", "getcov" for parameters and their uncertainties.
Status:
Estimated using PROCEST on time domain data "ze".
Fit to estimation data: 77.44%
FPE: 15.5, MSE: 15.39
В этом случае значение Kp является фиксированным, но Tp1 и Td оцениваются.