Прежде чем вы сможете выполнить эту задачу, вы должны иметь
Входные-выходные данные как iddata объект или данные частотной характеристики как frd или idfrd объекты. Смотрите Представление временных и частотных данных с использованием объектов iddata. Для поддерживаемых форматов данных смотрите Данные, Поддерживаемые Моделями Процесса.
Выполнено все необходимые операции предварительной обработки данных. При работе с временным интервалом данными, если вам нужно смоделировать ненулевые смещения, такие как, когда модель содержит поведение интегрирования, не умаляйте свои данные. В других случаях, чтобы улучшить точность вашей модели, вы должны детрендировать свои данные. Смотрите Способы подготовки данных для системы идентификации.
Можно оценить модели процесса с помощью итерационного метода оценки procest что минимизирует ошибки предсказания, чтобы получить максимальные оценки правдоподобия. Получившиеся модели хранятся как idproc объекты модели.
Можно использовать следующий общий синтаксис, чтобы как сконфигурировать, так и оценить модели процесса:
m = procest(data,mod_struc,opt)
data - данные оценки и mod_struc является одним из следующих:
Вектор символов, который представляет структуру модели процесса, как описано в спецификации структуры модели процесса.
Шаблон idproc модель. opt является набором опций для конфигурирования оценки модели процесса, таким как обработка начальных условий, входного смещения и численного метода поиска.
Совет
Вам не нужно создавать объект модели используя idproc перед оценкой, если вы не хотите задать начальные догадки параметров, минимальные/максимальные границы или фиксированные значения параметров, как описано в Estimate Process Models with Fixed Parameters.
Для получения дополнительной информации о проверке модели процесса смотрите Валидация моделей после оценки.
Вы можете использовать procest для уточнения оценок параметров существующей модели процесса, как описано в Refine Linear Parametric Models.
Для получения дополнительной информации смотрите procest и 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');
Оцените модель с одним полюсом, задержкой и компонентом нарушения порядка первого порядка. Данные содержат известные смещения. Задайте их с помощью 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 свойство model для задания начальных догадок для неизвестных параметров, минимальных/максимальных границ параметра и фиксирования известных параметров.
Установите значение 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 рассчитаны.