Прежде чем вы сможете выполнить эту задачу, вы должны иметь
Входные-выходные данные как 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
рассчитаны.