procest

Оцените модель процесса с помощью временных или частотных данных

Описание

пример

sys = procest(data,type) оценивает модель процесса, sys, используя данные во временной или частотной областях, data. type определяет структуру sys.

sys = procest(data,type,'InputDelay',InputDelay) задает задержку входа InputDelay.

пример

sys = procest(data,init_sys) использует модель процесса init_sys для конфигурирования начальной параметризации.

пример

sys = procest(___,opt) задает дополнительные опции оценки модели. Использование opt с любым из предыдущих синтаксисов.

пример

[sys,offset] = procest(___) возвращает оценочное значение смещения в входном сигнале. Входное смещение автоматически оценивается, когда модель содержит интегратора, или когда вы устанавливаете InputOffset опция оценки для 'estimate' использование procestOptions. Использование offset с любым из предыдущих синтаксисов.

пример

[sys,offset,ic] = procest(___) возвращает предполагаемые начальные условия как initialCondition объект. Используйте этот синтаксис, если вы планируете моделировать или предсказать ответ модели с помощью тех же входных данных оценки, а затем сравнить ответ с теми же выходными данными оценки. Включение начальных условий приводит к лучшему соответствию во время первой части симуляции.

Входные параметры

свернуть все

Оценочные данные, заданные как iddata объект, содержащий значения входного и выходного сигналов для оценки во временной области. Для оценки частотного диапазона, data может быть одним из следующих:

  • Зарегистрированные данные частотной характеристики (frd (Control System Toolbox) или idfrd)

  • iddata объект со свойствами, заданными следующим образом:

    • InputData - Фурье-преобразование входного сигнала

    • OutputData - Фурье-преобразование выходного сигнала

    • Domain'Frequency'

data должно иметь по крайней мере один вход и один выход.

Модели timeseries, которые являются моделями, которые не содержат измеренных входов, не могут быть оценены с помощью procest. Использовать ar, arx, или armax вместо этого для моделей timeseries.

Структура модели процесса, заданная для моделей SISO в виде вектора символов или строки, представляющей сокращение для структуры модели, такое как 'P1D' или 'P2DZ'. Аббревиатура состоит из:

  • P - Все 'Type' акронимы начинаются с этой буквы.

  • 0, 1, 2, или 3 - Количество констант времени (полюсов), которые нужно смоделировать. Возможные интегрирования (полюсы в источник) не включены в это число.

  • I - обеспечивается интегрирование (процесс саморегулирования).

  • D - Задержка (время отключения).

  • Z - Лишний член числителя, нуль.

  • U - Разрешены заниженные режимы (полюса с комплексным значением). Если U не входит в typeВсе полюса должны быть реальными. Количество полюсов должно быть 2 или 3.

Для моделей MIMO используйте Ny-by- Nu массив ячеек из векторов символов или строковых массивов с одной записью для каждой пары вход-выход. Вот Ny количество входов и Nu - количество выходов.

Для получения информации о том, как type влияет на структуру модели процесса, см. idproc.

Входные задержки, заданные как числовой вектор, задающий временную задержку для каждого входного канала. Задайте входные задержки в модуле времени, сохраненной в TimeUnit свойство.

Для системы с Nu входы, задайте InputDelay в Nu-by-1 вектор. Каждый элемент этого вектора является числовым значением, которое представляет входу задержку для соответствующего канала входа. Можно также задать InputDelay к скалярному значению, чтобы применить ту же задержку ко всем каналам.

Система конфигурирования начальной параметризации sys, заданный как idproc объект. Получаете init_sys путем выполнения оценки с использованием измеренных данных или путем прямой конструкции с использованием idproc. Программа использует параметры и ограничения, определенные в init_sys как исходное предположение для оценки sys.

Используйте Structure свойство init_sys настроить начальные предположения и ограничения для Kp, Tp1, Tp2, Tp3, Tw, Zeta, Td, и Tz. Для примера:

  • Чтобы задать начальное предположение для параметра Tp1 of init_sys, задать init_sys.Structure.Tp1.Value как начальное предположение.

  • Чтобы задать ограничения для параметра Tp2 of init_sys:

    • Задайте init_sys.Structure.Tp2.Minimum к минимальному значению Tp2.

    • Задайте init_sys.Structure.Tp2.Maximum на максимальное Tp2 значение.

    • Задайте init_sys.Structure.Tp2.Free чтобы указать, является ли Tp2 свободным параметром для оценки.

Если opt не задан, и init_sys был получен путем оценки, затем опции оценки из init_sys.Report.OptionsUsed используются.

Опции оценки, заданные как procestOptions набор опций. Оценка опций включать:

  • Цель оценки

  • Обращение с начальными условиями и компонентом нарушения порядка

  • Численный метод поиска, который будет использоваться в оценке

Выходные аргументы

свернуть все

Идентифицированная модель процесса, возвращенная как idproc модель структуры, заданная как type.

Информация о результатах оценки и используемых опциях хранится в Report модели свойство. Report имеет следующие поля:

Поле отчетаОписание
Status

Сводными данными статуса модели, которое указывает, была ли модель создана конструкцией или получена оценкой.

Method

Используется команда estimation.

InitialCondition

Обработка начальных условий во время оценки модели, возвращенная как одно из следующих значений:

  • 'zero' - Начальные условия были обнулены.

  • 'estimate' - Начальные условия рассматривались как параметры независимой оценки.

  • 'backcast' - Начальные условия оценивались с использованием наилучшей аппроксимации методом наименьших квадратов.

Это поле особенно полезно для просмотра того, как были обработаны начальные условия при InitialCondition опция в наборе опций оценки 'auto'.

Fit

Количественная оценка оценки, возвращенная как структура. Смотрите функции потерь и метрики качества модели для получения дополнительной информации об этих метриках качества. Структура имеет следующие поля:

ОбластьОписание
FitPercent

Нормированная мера средней квадратичной невязки корня (NRMSE) того, насколько хорошо реакция модели соответствует данным оценки, выраженным в процентах fit = 100 (1-NRMSE).

LossFcn

Значение функции потерь, когда оценка завершается.

MSE

Средняя квадратичная невязка (MSE) мера того, насколько хорошо реакция модели соответствует данным оценки.

FPE

Окончательная ошибка предсказания для модели.

AIC

Необработанная мера качества модели Akaike Information Criteria (AIC).

AICc

Скорректированный AIC небольшого размера.

nAIC

Нормализованный AIC.

BIC

Байесовские информационные критерии (BIC).

Parameters

Оценочные значения параметров модели.

OptionsUsed

Набор опций, используемый для оценки. Если пользовательские опции не были настроены, это набор опций по умолчанию. Посмотрите procestOptions для получения дополнительной информации.

RandState

Состояние потока случайных чисел в начале оценки. Пустой, [], если рандомизация не использовалась во время оценки. Для получения дополнительной информации см. rng.

DataUsed

Атрибуты данных, используемых для оценки. Структурируйте следующие поля:

ОбластьОписание
Name

Имя набора данных.

Type

Тип данных. Для idnlarx модели, это установлено на 'Time domain data'.

Length

Количество выборок данных.

Ts

Шаг расчета. Это эквивалентно Data.Ts.

InterSample

Входной межвыборка поведения. Одно из следующих значений:

  • 'zoh' - Удержание нулевого порядка поддерживает кусочно-постоянный входной сигнал между выборками.

  • 'foh' - Удержание первого порядка поддерживает кусочно-линейный входной сигнал между выборками.

  • 'bl' - Ограниченное по полосе поведение задает, что входной сигнал в непрерывном времени имеет нулевую степень выше частоты Найквиста.

Значение Intersample не влияет на результаты оценки для моделей в дискретном времени.

InputOffset

Пустой, [], для нелинейных методов оценки.

OutputOffset

Пустой, [], для нелинейных методов оценки.

Termination

Условия завершения итерационного поиска, используемого для минимизации ошибки предсказания, возвращаются как структура со следующими полями:

ОбластьОписание
WhyStop

Причина завершения численного поиска.

Iterations

Количество итераций поиска, выполненных алгоритмом оценки.

FirstOrderOptimality

-norm вектора поиска градиента, когда алгоритм поиска заканчивается.

FcnCount

Количество вызовов целевой функции.

UpdateNorm

Норма вектора поиска градиента в последней итерации. Опускается, когда метод поиска 'lsqnonlin' или 'fmincon'.

LastImprovement

Улучшение критерия в последней итерации, выраженное в процентах. Опускается, когда метод поиска 'lsqnonlin' или 'fmincon'.

Algorithm

Алгоритм, используемый 'lsqnonlin' или 'fmincon' метод поиска. Опускается, когда используются другие методы поиска.

Для методов оценки, которые не требуют численной оптимизации поиска, Termination поле опущено.

Для получения дополнительной информации об использовании Report, см. Отчет по оценке.

Расчетное значение входа смещения, возвращаемое как вектор. Когда data имеет несколько экспериментов, offset является матрицей, где каждый столбец соответствует эксперименту.

Предполагаемые начальные условия, возвращенные как initialCondition объект или объектный массив initialCondition значения.

  • Для одного набора данных эксперимента, ic представляет в форме пространства состояний свободный ответ модели передаточной функции (A и C матрицы) на предполагаемые начальные состояния (x0).

  • Для набора данных нескольких экспериментов с Ne экспериментами, ic - объектный массив длины Ne, которая содержит один набор initialCondition значения для каждого эксперимента.

Если procest возвращает ic значения 0 и вы знаете, что у вас ненулевые начальные условия, установите 'InitialCondition' опция в procestOptions на 'estimate' и передайте обновленный набор опций в procest. Для примера:

opt = procestOptions('InitialCondition,'estimate')
[sys,offset,ic] = procest(data,np,nz,opt)
Значение по умолчанию 'auto' установка 'InitialCondition' использует 'zero' способ, когда начальные условия оказывают незначительный эффект на процесс минимизации общей ошибки расчета. Определение 'estimate' гарантирует, что программное обеспечение оценивает значения для ic.

Для получения дополнительной информации смотрите initialCondition. Пример использования этого аргумента см. в разделе Получение начальных условий.

Примеры

свернуть все

Получите измеренные входно-выходные данные.

load iddemo_heatexchanger_data;
data = iddata(pt,ct,Ts);  
data.InputName  = '\Delta CTemp';
data.InputUnit  = 'C';
data.OutputName = '\Delta PTemp';
data.OutputUnit = 'C';
data.TimeUnit   = 'minutes';

Оцените модель процесса первого порядка плюс мертвое время.

type = 'P1D';
sysP1D = procest(data,type);

Сравните модель с данными.

compare(data,sysP1D)

Figure contains an axes. The axes contains 2 objects of type line. These objects represent data (\Delta PTemp), sysP1D: 70.76%.

Постройте график невязок модели.

figure
resid(data,sysP1D);

Figure contains 2 axes. Axes 1 with title AutoCorr contains 2 objects of type line. This object represents sysP1D. Axes 2 with title XCorr (\Delta CTemp) contains 2 objects of type line. This object represents sysP1D.

Рисунок показывает, что невязки коррелируют. Для этого добавьте компонент нарушения порядка ARMA первого порядка к модели процесса.

opt = procestOptions('DisturbanceModel','ARMA1');
sysP1D_noise = procest(data,'p1d',opt);

Сравните модели.

compare(data,sysP1D,sysP1D_noise)

Figure contains an axes. The axes contains 3 objects of type line. These objects represent data (\Delta PTemp), sysP1D: 70.76%, sysP1D\_noise: 24.43%.

Постройте график невязок модели.

figure
resid(data,sysP1D_noise);

Figure contains 2 axes. Axes 1 with title AutoCorr contains 2 objects of type line. This object represents sysP1D\_noise. Axes 2 with title XCorr (\Delta CTemp) contains 2 objects of type line. This object represents sysP1D\_noise.

Остатки sysP1D_noise являются некоррелированными.

Используйте регуляризацию, чтобы оценить параметры сверхпараметрированной модели процесса.

Предположим, что коэффициент усиления известен с более высокой степенью доверия, чем другие параметры модели.

Загрузка данных.

load iddata1 z1;

Оцените нерегулярную модель процесса.

m = idproc('P3UZ','K',7.5,'Tw',0.25,'Zeta',0.3,'Tp3',20,'Tz',0.02);
m1 = procest(z1,m);

Оцените регуляризованную модель процесса.

opt = procestOptions;
opt.Regularization.Nominal = 'model';
opt.Regularization.R = [100;1;1;1;1];
opt.Regularization.Lambda = 0.1;
m2 = procest(z1,m,opt);

Сравните выходы модели с данными.

compare(z1,m1,m2);

Figure contains an axes. The axes contains 3 objects of type line. These objects represent z1 (y1), m1: 26.74%, m2: 70.17%.

Регуляризация помогает направить процесс оценки к правильным значениям параметров.

Оцените модель процесса после определения начальных догадок для значений параметров и ограничения их.

Получите входные/выходные данные.

data = idfrd(idtf([10 2],[1 1.3 1.2],'iod',0.45),logspace(-2,2,256));

Задайте параметры модели инициализации оценки.

type = 'P2UZD';
init_sys = idproc(type);

init_sys.Structure.Kp.Value = 1; 
init_sys.Structure.Tw.Value = 2; 
init_sys.Structure.Zeta.Value = 0.1; 
init_sys.Structure.Td.Value = 0; 
init_sys.Structure.Tz.Value = 1; 
init_sys.Structure.Kp.Minimum = 0.1;
init_sys.Structure.Kp.Maximum = 10;
init_sys.Structure.Td.Maximum = 1;
init_sys.Structure.Tz.Maximum = 10;

Задайте опции оценки.

opt = procestOptions('Display','full','InitialCondition','Zero');
opt.SearchMethod = 'lm'; 
opt.SearchOptions.MaxIterations = 100;

Оцените модель процесса.

sys = procest(data,init_sys,opt);

Начиная с 'Display' опция задается как 'full'прогресс оценки отображается в отдельном окне «Прогресс идентификации объекта».

Сравните данные с оценочной моделью.

compare(data,sys,init_sys);

Figure contains 2 axes. Axes 1 with title From: u1 contains 3 objects of type line. These objects represent Data, sys: 100%, init\_sys: -7.299%. Axes 2 contains 3 objects of type line. These objects represent Data, sys: 100%, init\_sys: -7.299%.

Получите входные/выходные данные.

load iddata1 z1
load iddata2 z2
data = [z1 z2(1:300)];

data - набор данных с 2 входами и 2 выходами. Первый вход влияет только на первый выход. Точно так же второй вход влияет только на второй выход.

В оценочной модели процесса перекрестные условия, моделирование эффекта первого входа на втором выходе и наоборот, должны быть незначительными. Если этим динамикам присвоены более высокие порядки, их оценки показывают высокий уровень неопределенности.

Оцените модель процесса.

type = 'P2UZ'; 
sys = procest(data,type);

The type переменная обозначает модель с комплексно-сопряженной парой полюсов, нулями и задержкой.

Чтобы оценить неопределенности, постройте график частотной характеристики.

w = linspace(0,20*pi,100);
h = bodeplot(sys,w);
showConfidence(h);

Figure contains 8 axes. Axes 1 with title From: u1 contains an object of type line. This object represents sys. Axes 2 contains an object of type line. This object represents sys. Axes 3 contains an object of type line. This object represents sys. Axes 4 contains an object of type line. This object represents sys. Axes 5 with title From: u2 contains an object of type line. This object represents sys. Axes 6 contains an object of type line. This object represents sys. Axes 7 contains an object of type line. This object represents sys. Axes 8 contains an object of type line. This object represents sys.

load iddata1
[sys,offset] = procest(z1,'P1DI');
offset
offset = 0.0412

Загрузите данные.

load iddata1ic z1i

Оцените модель процесса первого порядка и мертвого времени sys и возвращает начальные условия в ic. Сначала задайте 'estimate' для 'InitialCondition' заставить программное обеспечение оценить ic. Значение по умолчанию 'auto' в настройке используется 'estimate' method только когда влияние начальных условий на общую ошибку модели превышает порог. Когда начальные условия оказывают незначительный эффект на процесс минимизации общей ошибки расчета, 'auto'setting использует 'zero'.

opt = procestOptions('InitialCondition','estimate');
[sys,offset,ic] = procest(z1i,'P1D',opt);
ic
ic = 
  initialCondition with properties:

     A: -3.8997
    X0: -1.0871
     C: 4.5652
    Ts: 0

ic является initialCondition объект, который инкапсулирует свободный ответ sys, в форме пространство состояний, в вектор начального состояния в X0. Можно включать ic когда вы симулируете sys с z1i входной сигнал и сравните ответ с z1i выходной сигнал.

Расширенные возможности

Введенный в R2012a