Идентифицируйте линейные модели Используя командную строку

Введение

Цели

Оцените и подтвердите линейные модели от multiple-input/single-output (MISO) данные, чтобы найти тот, который лучше всего описывает системную динамику.

После завершения этого примера вы сможете выполнить следующие задачи с помощью командной строки:

  • Создайте объекты данных представлять данные.

  • Отобразите данные на графике.

  • Обработайте данные путем удаления смещений из сигналов ввода и вывода.

  • Оцените и подтвердите линейные модели из данных.

  • Симулируйте и предскажите выход модели.

Примечание

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

Описание данных

Этот пример использует файл данных co2data.mat, который содержит два эксперимента 2D входа и одно выход (MISO) данные временного интервала из установившегося, которое оператор встревожил от значений равновесия.

В первом эксперименте оператор ввел импульсную волну обоим входным параметрам. Во втором эксперименте оператор ввел импульсную волну первому входу и сигнал шага к второму входу.

Подготовка данных

Загрузка данных в рабочее пространство MATLAB

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

load co2data

Эта команда загружает следующие пять переменных в рабочее пространство MATLAB:

  • Input_exp1 и Output_exp1 входные и выходные данные из первого эксперимента, соответственно.

  • Input_exp2 и Output_exp2 входные и выходные данные из второго эксперимента, соответственно.

  • Time временной вектор от 0 до 1 000 минут, увеличивающихся с равным шагом 0.5 min.

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

Отображение на графике Данных о вводе/выводе

Постройте входные и выходные данные из обоих экспериментов.

plot(Time,Input_exp1,Time,Output_exp1)
legend('Input 1','Input 2','Output 1')
figure
plot(Time,Input_exp2,Time,Output_exp2)
legend('Input 1','Input 2','Output 1')

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

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

Удаление значений равновесия из данных

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

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

Увеличьте масштаб графиков видеть, что самый ранний момент, когда оператор применяет воздействие к входным параметрам, происходит после 25 минут установившихся условий (или после первых 50 выборок). Таким образом среднее значение первых 50 выборок представляет условия равновесия.

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

Input_exp1 = Input_exp1-...
   ones(size(Input_exp1,1),1)*mean(Input_exp1(1:50,:));
Output_exp1 = Output_exp1-...
   mean(Output_exp1(1:50,:));
Input_exp2 = Input_exp2-...
   ones(size(Input_exp2,1),1)*mean(Input_exp2(1:50,:));
Output_exp2 = Output_exp2-...
   mean(Output_exp2(1:50,:));

Используя объекты представлять данные для System Identification

Объекты данных System Identification Toolbox™, iddata и idfrd, инкапсулируйте значения данных и свойства данных в одну сущность. Можно использовать команды System Identification Toolbox, чтобы удобно управлять этими объектами данных как одна сущности.

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

Примечание

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

Создание iddata Объекты

Вы, должно быть, уже загрузили выборочные данные в рабочую область MATLAB®, как описано в Загрузке Данных в рабочее пространство MATLAB.

Используйте эти команды, чтобы создать два объекта данных, ze и zv :

Ts = 0.5; % Sample time is 0.5 min
ze = iddata(Output_exp1,Input_exp1,Ts);
zv = iddata(Output_exp2,Input_exp2,Ts);

ze содержит данные из Эксперимента 1 и zv содержит данные из Эксперимента 2. Ts шаг расчета.

iddata конструктор требует трех аргументов для данных временного интервала и имеет следующий синтаксис:

data_obj = iddata(output,input,sampling_interval);

Просмотреть свойства iddata объект, используйте get команда. Например, введите эту команду, чтобы получить свойства данных об оценке:

get(ze)
ans = 

  struct with fields:

              Domain: 'Time'
                Name: ''
          OutputData: [2001x1 double]
                   y: 'Same as OutputData'
          OutputName: {'y1'}
          OutputUnit: {''}
           InputData: [2001x2 double]
                   u: 'Same as InputData'
           InputName: {2x1 cell}
           InputUnit: {2x1 cell}
              Period: [2x1 double]
         InterSample: {2x1 cell}
                  Ts: 0.5000
              Tstart: []
    SamplingInstants: [2001x0 double]
            TimeUnit: 'seconds'
      ExperimentName: 'Exp1'
               Notes: {}
            UserData: []

Чтобы узнать больше о свойствах этого объекта данных, смотрите iddata страница с описанием.

Чтобы изменить свойства данных, можно использовать запись через точку или set команда. Например, чтобы присвоить названия канала и модули, которые подписывают оси графика, введите следующий синтаксис в командном окне MATLAB:

% Set time units to minutes
ze.TimeUnit = 'min';
% Set names of input channels
ze.InputName = {'ConsumptionRate','Current'};
% Set units for input variables
ze.InputUnit = {'kg/min','A'};
% Set name of output channel
ze.OutputName = 'Production';
% Set unit of output channel
ze.OutputUnit = 'mg/min';

% Set validation data properties
zv.TimeUnit = 'min';
zv.InputName = {'ConsumptionRate','Current'};
zv.InputUnit = {'kg/min','A'};
zv.OutputName = 'Production';
zv.OutputUnit = 'mg/min';

Можно проверить что InputName свойство ze изменяется, или "индекс" в это свойство:

ze.inputname;

Совет

Имена свойства, такие как InputUnit, не являются чувствительными к регистру. Можно также сократить имена свойства, которые запускаются с Input или Output путем замены u для Input и y для Output на имя свойства. Например, OutputUnit эквивалентно yunit.

Отображение на графике данных в объекте данных

Можно построить iddata объекты с помощью plot команда.

Отобразите данные об оценке на графике.

plot(ze)

Нижние оси показывают входным параметрам ConsumptionRate и Current, и главные оси показывают выход ProductionRate .

Отобразите данные о валидации на графике в новом окне рисунка.

figure   % Open a new MATLAB Figure window
plot(zv) % Plot the validation data

Увеличьте масштаб графиков видеть, что процесс эксперимента усиливает первый вход (ConsumptionRate ) на коэффициент 2, и усиливает второй вход (Current ) на коэффициент 10.

Выбор подмножества данных

Прежде чем вы начнете, создадите новый набор данных, который содержит только первые 1 000 выборок исходных наборов данных оценки и валидации, чтобы ускорить вычисления.

Ze1 = ze(1:1000);
Zv1 = zv(1:1000);

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

Оценка моделей импульсной характеристики

Почему оценка модели неродной и частотной характеристики?

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

В этом фрагменте примера вы оцениваете эти модели с помощью набора данных ze. Вы, должно быть, уже создали ze, как описано в Создании iddata Объекты.

Графики отклика из этих моделей показывают следующие характеристики системы:

  • Ответ от первого входа до выхода может быть функцией второго порядка.

  • Ответ от второго входа до выхода может быть первым порядком или сверхослабленной функцией.

Оценка частотной характеристики

Продукт System Identification Toolbox обеспечивает три функции для оценки частотной характеристики:

  • etfe вычисляет эмпирическую передаточную функцию с помощью анализа Фурье.

  • spa оценивает передаточную функцию с помощью спектрального анализа для разрешения фиксированной частоты.

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

Используйте spa оценить частотную характеристику.

Ge = spa(ze);

Постройте частотную характеристику как Диаграмму Боде.

bode(Ge)

Амплитуда достигает максимума на частоте 0,54 рад/min, которые предлагают возможное резонирующее поведение (комплексные полюса) для первой комбинации входа к выходу - ConsumptionRate к Production .

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

Оценка эмпирического переходного процесса

Чтобы оценить переходной процесс из данных, сначала оцените непараметрическую модель импульсной характеристики (КИХ-фильтр) из данных и затем постройте его переходной процесс.

% model estimation
Mimp = impulseest(Ze1,60);

% step response
step(Mimp)

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

Переходной процесс от второго входа до выхода не показывает перерегулирования, которое указывает или на ответ первого порядка или на ответ высшего порядка с действительными полюсами (сверхослабленный ответ).

Переходный процесс указывает на ненулевую задержку системы, которая сопоставима с быстрым спадом фазы, вы вошли в Диаграмму Боде, которую вы создали в Оценке Эмпирического Переходного процесса.

Оценка задержек нескольких - входная система

Почему оценка задерживается?

Чтобы идентифицировать параметрические модели черного ящика, необходимо задать задержку ввода/вывода как часть порядка модели.

Если вы не знаете задержки ввода/вывода своей системы из эксперимента, можно использовать программное обеспечение System Identification Toolbox, чтобы оценить задержку.

Оценка задержек Используя структуру модели ARX

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

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

Структура модели ARX является одним из самого простого черного ящика параметрические структуры. В дискретное время структура ARX является разностным уравнением со следующей формой:

y(t)+a1y(t1)++anay(tna)=         b1u(tnk)++bnbu(tnknb+1)+e(t)

y (t) представляет выход во время t, u (t) представляет вход во время t, na является количеством полюсов, nb является количеством b параметров (равный количеству нулей плюс 1), nk является количеством выборок, прежде чем вход будет влиять на выход системы (названный задержкой или потеря времени модели), и e (t) является бело-шумовым воздействием.

delayest принимает это na=nb=2 и что шум e является белым или незначительным, и оценивает nk.

Чтобы оценить задержку этой системы, введите:

delayest(ze)
ans =

     5    10

Этот результат включает два числа, потому что существует два входных параметров: предполагаемой задержкой первого входа является 5 выборками данных и предполагаемой задержкой второго входа является 10 выборки данных. Поскольку шагом расчета для экспериментов является 0.5 min, это соответствует 2.5 - задержка min перед первым входом влияет на выход и 5.0 - задержка min перед вторым входом влияет на выход.

Оценка задержек Используя альтернативные методы

Существует два альтернативных метода для оценки задержки системы:

  • Постройте график временной зависимости входных и выходных данных и считайте разницу во времени между первым изменением во входе и первым изменением в выходе. Этот метод практичен только для single-input/single-output системы; в случае нескольких - входные системы, вы можете не мочь сказать, которые вводят, вызвал начальное изменение в выходе.

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

Оценка порядков модели Используя структуру модели ARX

Почему оценочный порядок модели?

Порядок модели является одним или несколькими целыми числами, которые задают сложность модели. В общем случае порядок модели связан с количеством полюсов, количеством нулей и задержкой ответа (время в терминах количества выборок, прежде чем выход ответит на вход). Определенное значение порядка модели зависит от структуры модели.

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

После завершения шагов в этом разделе вы получаете следующие результаты:

  • Для первой комбинации ввода/вывода: na=2, nb=2, и задержка nk=5.

  • Для второй комбинации ввода/вывода: na=1, nb=1, и задержка nk=10.

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

Команды для оценки порядка модели

В этом фрагменте примера вы используете struc, arxstruc, и selstruc оценить и сравнить простые полиномиальные модели (ARX) для области значений порядков модели и задержек, и выбрать лучшие порядки на основе качества модели.

Следующий список описывает результаты использования каждой команды:

  • struc создает матрицу комбинаций порядка модели для заданной области na, nb, и nk значения.

  • arxstruc берет выход из struc, систематически оценивает модель ARX для каждого порядка модели и сравнивает выход модели с измеренным выходом. arxstruc возвращает функцию потерь для каждой модели, которая является нормированной суммой ошибок предсказания в квадрате.

  • selstruc берет выход из arxstruc и открывает окно ARX Model Structure Selection, которое напоминает следующую фигуру, чтобы помочь вам выбрать порядок модели.

    Вы используете этот график выбрать хорошо-подходящую модель.

    • Горизонтальная ось является общим количеством параметров — na + nb.

    • Вертикальная ось, названная Unexplained output variance (in %), является фрагментом выхода, не объясненного моделью — ошибка предсказания модели ARX для количества параметров, показанных на горизонтальной оси.

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

    • nk является задержкой.

    Три прямоугольника подсвечены на графике в зеленом, синем цвете, и красные. Каждый цвет указывает на тип хорошо-подходящего критерия, можно следующим образом:

    • Красный — Лучшая подгонка минимизирует сумму квадратов различия между выводом данных валидации и выходом модели. Этот прямоугольник указывает на полную лучшую подгонку.

    • Зеленый — Лучшая подгонка минимизирует критерий Rissanen MDL.

    • Синий — Лучшая подгонка минимизирует критерий AIC Akaike.

    В этом примере значение Unexplained output variance (in %) остается приблизительно постоянным для объединенного количества параметров от 4 до 20. Такое постоянство указывает, что производительность модели не улучшается в высших порядках. Таким образом модели младшего разряда могут соответствовать данным одинаково хорошо.

    Примечание

    Когда вы будете использовать тот же набор данных для оценки и валидации, используйте MDL и критерии AIC, чтобы выбрать порядки модели. Эти критерии компенсируют сверхподбор кривой, который следует из использования слишком многих параметров. Для получения дополнительной информации об этих критериях, смотрите selstruc страница с описанием.

Порядок модели для первой комбинации ввода - вывода

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

Это целесообразно пробовать комбинации следующего заказа за первую комбинацию ввода/вывода:

  • na=2:5

  • nb=1:5

  • nk=5

Это вызвано тем, что непараметрические модели, которые вы оценили в Оценке Моделей Импульсной характеристики, показывают, что ответ для первой комбинации ввода/вывода может иметь ответ второго порядка. Точно так же в Оценке Задержек Нескольких - Входная Система, задержка этой комбинации ввода/вывода, как оценивалось, была 5.

Оценить порядок модели для первой комбинации ввода/вывода:

  1. Использование struc создать матрицу возможных порядков модели.

    NN1 = struc(2:5,1:5,5);
  2. Использование selstruc вычислить функции потерь для моделей ARX с порядками в NN1.

    selstruc(arxstruc(ze(:,:,1),zv(:,:,1),NN1))

    Примечание

    ze(:,:,1) выбирает первый вход в данных.

    Эта команда открывает интерактивное окно ARX Model Structure Selection.

    Примечание

    Rissanen MDL и критерии AIC Akaike приводят к эквивалентным результатам и оба обозначаются синим прямоугольником на графике.

    Красный прямоугольник представляет лучшую полную подгонку, которая происходит для na=2, nb=3, и nk=5. Разность высот между красными и синими прямоугольниками незначительна. Поэтому можно выбрать комбинацию параметра, которая соответствует самому низкому порядку модели и самой простой модели.

  3. Кликните по синему прямоугольнику, и затем нажмите Select, чтобы выбрать ту комбинацию порядков:

    na=2

    nb=2

    nk=5

  4. Чтобы продолжиться, нажмите любую клавишу в то время как в командном окне MATLAB.

Порядок модели для второй комбинации ввода - вывода

Это целесообразно пробовать комбинации следующего заказа за вторую комбинацию ввода/вывода:

  • na=1:3

  • nb=1:3

  • nk=10

Это вызвано тем, что непараметрические модели, которые вы оценили в Оценке Моделей Импульсной характеристики, показывают, что ответ для второй комбинации ввода/вывода может иметь ответ первого порядка. Точно так же в Оценке Задержек Нескольких - Входная Система, задержка этой комбинации ввода/вывода, как оценивалось, была 10.

Оценить порядок модели для второй комбинации ввода/вывода:

  1. Использование struc создать матрицу возможных порядков модели.

    NN2 = struc(1:3,1:3,10);
  2. Использование selstruc вычислить функции потерь для моделей ARX с порядками в NN2.

    selstruc(arxstruc(ze(:,:,2),zv(:,:,2),NN2))

    Эта команда открывает интерактивное окно ARX Model Structure Selection.

    Примечание

    AIC Akaike и полные лучшие подходящие критерии приводят к эквивалентным результатам. Оба обозначаются тем же красным прямоугольником на графике.

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

  3. Кликните по желтому прямоугольнику на крайне левом, и затем нажмите Select, чтобы выбрать самое низкоуровневое: na=1, nb=1, и nk=10.

  4. Чтобы продолжиться, нажмите любую клавишу в то время как в командном окне MATLAB.

Оценка передаточных функций

Определение структуры передаточной функции

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

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

    • Два полюса, соответствуя na=2 в модели ARX.

    • Задержка 5, соответствуя nk=5 выборки (или 2,5 минуты) в модели ARX.

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

    • Один полюс, соответствуя na=1 в модели ARX

    • Задержка 10, соответствуя nk=10 выборки (или 5 минут) в модели ARX.

Можно оценить передаточную функцию этих порядков с помощью tfest команда. Для оценки можно также принять решение просмотреть отчет о выполнении работ путем установки Display опция к on в наборе опции, созданном tfestOptions команда.

Opt = tfestOptions('Display','on');

Соберите порядки модели и задержки в переменные, чтобы передать tfest.

np = [2 1];
ioDelay = [2.5 5];

Оцените передаточную функцию.

mtf = tfest(Ze1,np,[],ioDelay,Opt);

Просмотрите коэффициенты модели.

mtf
mtf =
 
  From input "ConsumptionRate" to output "Production":
                  -1.382 s + 0.0008305
  exp(-2.5*s) * -------------------------
                s^2 + 1.014 s + 5.447e-12
 
  From input "Current" to output "Production":
                 5.93
  exp(-5*s) * ----------
              s + 0.5858
 
Continuous-time identified transfer function.

Parameterization:
   Number of poles: [2 1]   Number of zeros: [1 0]
   Number of free coefficients: 6
   Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                         
Estimated using TFEST on time domain data "Ze1".
Fit to estimation data: 78.92%                  
FPE: 14.22, MSE: 13.97                          

Отображение модели показывает больше чем 85%-ю подгонку к данным об оценке.

Проверка модели

В этом фрагменте примера вы создаете график, который сравнивает фактический выход и выход модели с помощью compare команда.

compare(Zv1,mtf)

Сравнение показывает приблизительно 60%-ю подгонку.

Остаточный анализ

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

resid(Zv1,mtf)

Остаточные значения показывают высокую степень автокорреляции. Это не неожиданно начиная с модели mtf не имеет никаких компонентов, чтобы описать природу шума отдельно. Чтобы смоделировать и измеренную динамику ввода - вывода и динамику воздействия, необходимо будет использовать структуру модели, которая содержит элементы, чтобы описать шумовой компонент. Можно использовать bj, ssest и procest команды, которые создают модели полинома, пространства состояний и структур процесса соответственно. Эти структуры, среди других, содержат элементы, чтобы получить шумовое поведение.

Оценка моделей процессов

Определение структуры модели процесса

В этом фрагменте примера вы оцениваете младший разряд, передаточная функция непрерывного времени (модель процесса). модели непрерывного времени поддержки продукта System Identification Toolbox с самое большее тремя полюсами (который может содержать полюса underdamped), один нуль, элемент задержки и интегратор.

Вы, должно быть, уже подготовили свои данные, как описано в Подготовка данных.

Можно использовать следующие результаты предполагаемых порядков модели задать порядки модели:

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

    • Два полюса, соответствуя na=2 в модели ARX.

    • Задержка 5, соответствуя nk=5 выборкам (или 2,5 минуты) в модели ARX.

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

    • Один полюс, соответствуя na=1 в модели ARX.

    • Задержка 10, соответствуя nk=10 выборкам (или 5 минут) в модели ARX.

Примечание

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

Используйте idproc команда, чтобы создать две структуры модели, один для каждой комбинации ввода/вывода:

midproc0 = idproc({'P2ZUD','P1D'}, 'TimeUnit', 'minutes');

Массив ячеек {'P2ZUD','P1D'} задает структуру модели для каждой комбинации ввода/вывода:

  • 'P2ZUD' представляет передаточную функцию двумя полюсами (P2 ), один нуль (Z ), underdamped (комплексно-сопряженные) полюса (U ) и задержка (D ).

  • 'P1D' представляет передаточную функцию одним полюсом (P1 ) и задержка (D ).

Пример также использует TimeUnit параметр, чтобы задать модуль используемого времени.

Просмотр структуры модели и значений параметров

Просмотрите две получившихся модели.

midproc0
midproc0 =
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2
  From input 1 to output 1:                         
                       1+Tz*s                       
  G11(s) = Kp * ---------------------- * exp(-Td*s) 
                1+2*Zeta*Tw*s+(Tw*s)^2              
                                                    
         Kp = NaN                                   
         Tw = NaN                                   
       Zeta = NaN                                   
         Td = NaN                                   
         Tz = NaN                                   
                                                    
  From input 2 to output 1:                         
             Kp                                     
  G12(s) = ---------- * exp(-Td*s)                  
            1+Tp1*s                                 
                                                    
        Kp = NaN                                    
       Tp1 = NaN                                    
        Td = NaN                                    
                                                    
Parameterization:
    {'P2DUZ'}    {'P1D'}
   Number of free coefficients: 8
   Use "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                         
Created by direct construction or transformation. Not estimated.

Значения параметров установлены в NaN потому что они еще не оцениваются.

Определение исходных предположений для задержек

Установите свойство с временной задержкой объекта модели к 2.5 min и 5 min для каждой пары ввода/вывода как исходные предположения. Кроме того, установите верхний предел для задержки, потому что хорошие исходные предположения доступны.

midproc0.Structure(1,1).Td.Value = 2.5;
midproc0.Structure(1,2).Td.Value = 5;
midproc0.Structure(1,1).Td.Maximum = 3;
midproc0.Structure(1,2).Td.Maximum = 7;

Примечание

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

Оценка Параметров модели Используя пропояс

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

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

Для этого фрагмента примера вы, должно быть, уже задали структуру модели, как описано в Определении Структуры Модели процесса. Используйте midproc0 как структура модели и Ze1 как данные об оценке:

midproc = procest(Ze1,midproc0);
present(midproc)
                                                                  
midproc =                                                         
Process model with 2 inputs: y = G11(s)u1 + G12(s)u2              
  From input "ConsumptionRate" to output "Production":            
                       1+Tz*s                                     
  G11(s) = Kp * ---------------------- * exp(-Td*s)               
                1+2*Zeta*Tw*s+(Tw*s)^2                            
                                                                  
         Kp = -1.1807 +/- 0.29987                                 
         Tw = 1.6437 +/- 714.6                                    
       Zeta = 16.036 +/- 6958.9                                   
         Td = 2.426 +/- 64.276                                    
         Tz = -109.19 +/- 63.738                                  
                                                                  
  From input "Current" to output "Production":                    
             Kp                                                   
  G12(s) = ---------- * exp(-Td*s)                                
            1+Tp1*s                                               
                                                                  
        Kp = 10.264 +/- 0.048404                                  
       Tp1 = 2.049 +/- 0.054901                                   
        Td = 4.9175 +/- 0.034374                                  
                                                                  
Parameterization:                                                 
    {'P2DUZ'}    {'P1D'}                                          
   Number of free coefficients: 8                                 
   Use "getpvec", "getcov" for parameters and their uncertainties.
                                                                  
Status:                                                           
Termination condition: Maximum number of iterations reached..     
Number of iterations: 20, Number of function evaluations: 279     
                                                                  
Estimated using PROCEST on time domain data "Ze1".                
Fit to estimation data: 86.2%                                     
FPE: 6.081, MSE: 5.984                                            
More information in model's "Report" property.                    

В отличие от моделей полинома дискретного времени, модели непрерывного времени позволяют вам оценить задержки. В этом случае предполагаемые значения задержки отличаются от исходных предположений, которые вы задали 2.5 и 5 , соответственно. Большая неопределенность в ориентировочных стоимостях параметров G_1(s) укажите что динамика от входа 1 к выходу не получены хорошо.

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

Проверка модели

В этом фрагменте примера вы создаете график, который сравнивает фактический выход и выход модели.

compare(Zv1,midproc)

График показывает, что выход модели обоснованно соглашается с измеренным выходом: существует соглашение о 60% между моделью и данными о валидации.

Используйте resid выполнять остаточный анализ.

resid(Zv1,midproc)

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

Измените алгоритм для итеративной оценки параметра Levenberg-Marquardt.

Opt = procestOptions;
Opt.SearchMethod = 'lm';
midproc1 = procest(Ze1,midproc,Opt);

Тонкая настройка свойств алгоритма или определение начальных предположений параметра и повторное выполнение оценки могут улучшить результаты симуляции. Добавление шумовой модели может улучшить результаты предсказания, но не обязательно результаты симуляции.

Оценка модели процесса с шумовой моделью

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

Используйте следующие команды, чтобы задать шум ARMA первого порядка:

Opt = procestOptions;
Opt.DisturbanceModel = 'ARMA1';
midproc2 = procest(Ze1,midproc0,Opt);

Можно ввести 'dist' вместо 'DisturbanceModel'. Имена свойства не являются чувствительными к регистру, и только необходимо включать фрагмент имени, которое однозначно определяет свойство.

Сравните получившуюся модель с результатами измерений.

compare(Zv1,midproc2)

График показывает, что выход модели обеспечивает разумное соглашение с выводом данных валидации.

Выполните остаточный анализ.

resid(Zv1,midproc2)

Остаточный график показывает, что значения автокорреляции в доверительных границах. Таким образом добавление шумовой модели производит некоррелированые остаточные значения. Это указывает на более точную модель.

Оценка моделей полинома черного ящика

Порядки модели для оценки полиномиальных моделей

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

Вы, должно быть, уже подготовили свои данные, как описано в Подготовка данных.

Можно использовать следующие предыдущие результаты предполагаемых порядков модели задать порядки полиномиальной модели:

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

    • Два полюса, соответствуя na=2 в модели ARX.

    • Один нуль, соответствуя nb=2 в модели ARX.

    • Задержка 5, соответствуя nk=5 выборкам (или 2,5 минуты) в модели ARX.

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

    • Один полюс, соответствуя na=1 в модели ARX.

    • Никакие нули, соответствуя nb=1 в модели ARX.

    • Задержка 10, соответствуя nk=10 выборкам (или 5 минут) в модели ARX.

Оценка линейной модели ARX

О Моделях ARX.  Для single-input/single-output системы (SISO) структура модели ARX:

y(t)+a1y(t1)++anay(tna)=         b1u(tnk)++bnbu(tnknb+1)+e(t)

y (t) представляет выход во время t, u (t) представляет вход во время t, na является количеством полюсов, nb является количеством нулей плюс 1, nk является количеством выборок, прежде чем вход будет влиять на выход системы (названный задержкой или потеря времени модели), и e (t) является бело-шумовым воздействием.

Структура модели ARX не различает полюса для отдельных путей к вводу/выводу: деление уравнения ARX A, который содержит полюса, показывает, что A появляется в знаменателе для обоих входных параметров. Поэтому можно установить na на сумму полюсов для каждой пары ввода/вывода, которая равна 3 в этом случае.

Продукт System Identification Toolbox оценивает параметры a1an и b1bn использование данных и модели приказывает, чтобы вы задали.

Оценка Моделей ARX Используя arx.  Использование arx вычислить полиномиальные коэффициенты с помощью быстрого, неитеративного метода arx:

marx = arx(Ze1,'na',3,'nb',[2 1],'nk',[5 10]);
present(marx) % Displays model parameters
              % with uncertainty information
                                                                              
marx =                                                                        
Discrete-time ARX model: A(z)y(t) = B(z)u(t) + e(t)                           
                                                                              
  A(z) = 1 - 1.027 (+/- 0.02907) z^-1 + 0.1678 (+/- 0.042) z^-2 + 0.01289 (   
                                                         +/- 0.02583) z^-3    
                                                                              
  B1(z) = 1.86 (+/- 0.189) z^-5 - 1.608 (+/- 0.1888) z^-6                     
                                                                              
  B2(z) = 1.612 (+/- 0.07392) z^-10                                           
                                                                              
Sample time: 0.5 minutes                                                      
                                                                              
Parameterization:                                                             
   Polynomial orders:   na=3   nb=[2 1]   nk=[5 10]                           
   Number of free coefficients: 6                                             
   Use "polydata", "getpvec", "getcov" for parameters and their uncertainties.
                                                                              
Status:                                                                       
Estimated using ARX on time domain data "Ze1".                                
Fit to estimation data: 90.7% (prediction focus)                              
FPE: 2.768, MSE: 2.719                                                        
More information in model's "Report" property.                                

MATLAB оценивает полиномы A , B1 , и B2. Неопределенность для каждого из параметров модели вычисляется к 1 стандартному отклонению и появляется в круглых скобках рядом с каждым значением параметров.

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

marx = arx(Ze1,[3 2 1 5 10]);

Доступ к Данным модели.  Модель вы оценили, marx, дискретное время idpoly объект. Чтобы получить свойства этого объекта модели, можно использовать get функция:

get(marx)
                 A: [1 -1.0267 0.1678 0.0129]
                 B: {[0 0 0 0 0 1.8599 -1.6084]  [0 0 0 0 0 0 0 0 0 0 1.6118]}
                 C: 1
                 D: 1
                 F: {[1]  [1]}
    IntegrateNoise: 0
          Variable: 'z^-1'
           IODelay: [0 0]
         Structure: [1x1 pmodel.polynomial]
     NoiseVariance: 2.7436
        InputDelay: [2x1 double]
       OutputDelay: 0
                Ts: 0.5000
          TimeUnit: 'minutes'
         InputName: {2x1 cell}
         InputUnit: {2x1 cell}
        InputGroup: [1x1 struct]
        OutputName: {'Production'}
        OutputUnit: {'mg/min'}
       OutputGroup: [1x1 struct]
             Notes: [0x1 string]
          UserData: []
              Name: ''
      SamplingGrid: [1x1 struct]
            Report: [1x1 idresults.arx]

Можно получить доступ к информации, хранившей этими свойствами с помощью записи через точку. Например, можно вычислить дискретные полюса модели путем нахождения корней A полином.

marx_poles = roots(marx.a)
marx_poles =

    0.7953
    0.2877
   -0.0564

В этом случае вы получаете доступ к A полином с помощью marx.a.

Модель marx описывает системную динамику с помощью трех дискретных полюсов.

Совет

Можно также использовать pole вычислить полюса модели непосредственно.

Узнать больше.  Чтобы узнать больше об оценке полиномиальных моделей, см. Модели Полинома Ввода - вывода.

Для получения дополнительной информации о доступе к данным модели, смотрите Экстракцию Данных.

Оценка моделей в пространстве состояний

О Моделях в пространстве состояний.  Общая структура модели в пространстве состояний:

dxdt=Ax(t)+Bu(t)+Ke(t)y(t)=Cx(t)+Du(t)+e(t)

y (t) представляет выход во время t, u (t) представляет вход во время t, x (t) является вектором состояния во время t, и e (t) является бело-шумовым воздействием.

Необходимо задать одно целое число как порядок модели (размерность вектора состояния), чтобы оценить модель в пространстве состояний. По умолчанию задержка равняется 1.

Продукт System Identification Toolbox оценивает матрицы пространства состояний A, B, C, D, и K использование порядка модели и данных, которые вы задаете.

Структура модели в пространстве состояний является хорошим выбором для быстрой оценки, потому что это содержит только два параметра: n количество полюсов (размер матрицы A) и nk задержка.

Оценка Моделей в пространстве состояний Используя n4sid.  Используйте n4sid команда, чтобы указать диапазон порядков модели и оценить эффективность нескольких моделей в пространстве состояний (порядки 2 - 8):

mn4sid = n4sid(Ze1,2:8,'InputDelay',[4 9]);

Эта команда использует быстрое, неитеративное (подпространство) метод и открывает следующий график. Вы используете этот график решить, какие состояния предоставляют значительный относительный вклад в поведение ввода/вывода, и какие состояния предоставляют самый маленький вклад.

Вертикальная ось является относительной мерой того, сколько каждое состояние вносит в поведение ввода/вывода модели (журнал сингулярных значений ковариационной матрицы). Горизонтальная ось соответствует порядку модели n. Этот график рекомендует n=3, обозначенный красным прямоугольником.

Поле порядка Chosen Order отображает рекомендуемый порядок модели, 3 в этом случае, по умолчанию. Можно изменить выбор порядка при помощи Chosen Order выпадающий список. Примените значение в поле Chosen Order и закройте окно выбора порядка путем нажатия на Apply.

По умолчанию, n4sid использует свободную параметризацию формы пространства состояний. Чтобы оценить каноническую форму вместо этого, установите значение SSParameterization свойство к 'Canonical' . Можно также задать задержку входа к выходу (в выборках) использование 'InputDelay' свойство.

mCanonical = n4sid(Ze1,3,'SSParameterization','canonical','InputDelay',[4 9]);
present(mCanonical);  %  Display model properties
                                                                              
mCanonical =                                                                  
  Discrete-time identified state-space model:                                 
    x(t+Ts) = A x(t) + B u(t) + K e(t)                                        
       y(t) = C x(t) + D u(t) + e(t)                                          
                                                                              
  A =                                                                         
                       x1                  x2                  x3             
   x1                   0                   1                   0             
   x2                   0                   0                   1             
   x3  0.0737 +/- 0.05919  -0.6093 +/- 0.1626    1.446 +/- 0.1287             
                                                                              
  B =                                                                         
             ConsumptionR             Current                                 
   x1   1.844 +/-   0.175   0.5633 +/-  0.122                                 
   x2   1.063 +/-  0.1673    2.308 +/- 0.1222                                 
   x3  0.2779 +/- 0.09615    1.878 +/- 0.1058                                 
                                                                              
  C =                                                                         
               x1  x2  x3                                                     
   Production   1   0   0                                                     
                                                                              
  D =                                                                         
               ConsumptionR       Current                                     
   Production             0             0                                     
                                                                              
  K =                                                                         
               Production                                                     
   x1  0.8674 +/- 0.03169                                                     
   x2  0.6849 +/- 0.04145                                                     
   x3  0.5105 +/- 0.04352                                                     
                                                                              
  Input delays (sampling periods): 4  9                                       
                                                                              
Sample time: 0.5 minutes                                                      
                                                                              
Parameterization:                                                             
   CANONICAL form with indices: 3.                                            
   Feedthrough: none                                                          
   Disturbance component: estimate                                            
   Number of free coefficients: 12                                            
   Use "idssdata", "getpvec", "getcov" for parameters and their uncertainties.
                                                                              
Status:                                                                       
Estimated using N4SID on time domain data "Ze1".                              
Fit to estimation data: 91.39% (prediction focus)                             
FPE: 2.402, MSE: 2.331                                                        
More information in model's "Report" property.                                

Примечание

mn4sid и mCanonical модели дискретного времени. Чтобы оценить модель непрерывного времени, установите 'Ts' свойство к 0 в команде оценки или использовании ssest команда:

mCT1 = n4sid(Ze1, 3, 'Ts', 0, 'InputDelay', [2.5 5])
mCT2 = ssest(Ze1, 3,'InputDelay', [2.5 5])

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

Оценка модели поля-Jenkins

О Моделях Поля-Jenkins.  Общая структура Поля-Jenkins (BJ):

y(t)=i=1nuBi(q)Fi(q)ui(tnki)+C(q)D(q)e(t)

Чтобы оценить модель BJ, необходимо задать параметры nb, nf, nc, без обозначения даты, и nk.

Принимая во внимание, что структура модели ARX не различает полюса для отдельных путей к вводу/выводу, модель BJ обеспечивает больше гибкости в моделировании полюсов и нулей воздействия отдельно от полюсов и нулей системной динамики.

Оценка Модели BJ Используя полиоценку.  Можно использовать polyest оценить модель BJ. polyest итерационный метод и имеет следующий общий синтаксис:

polyest(data,[na nb nc nd nf nk]);

Чтобы оценить модель BJ, введите:

na = 0;
nb = [ 2 1 ];
nc = 1;
nd = 1;
nf = [ 2 1 ];
nk = [ 5 10];
mbj = polyest(Ze1,[na nb nc nd nf nk]);

Эта команда задает nf=2 , nb=2 , nk=5 для первого входа и nf=nb=1 и nk=10 для второго входа.

Отобразите информацию модели.

present(mbj)
                                                                              
mbj =                                                                         
Discrete-time BJ model: y(t) = [B(z)/F(z)]u(t) + [C(z)/D(z)]e(t)              
  B1(z) = 1.823 (+/- 0.1792) z^-5 - 1.315 (+/- 0.2367) z^-6                   
                                                                              
  B2(z) = 1.791 (+/- 0.06431) z^-10                                           
                                                                              
  C(z) = 1 + 0.1068 (+/- 0.04009) z^-1                                        
                                                                              
  D(z) = 1 - 0.7452 (+/- 0.02694) z^-1                                        
                                                                              
  F1(z) = 1 - 1.321 (+/- 0.06936) z^-1 + 0.5911 (+/- 0.05514) z^-2            
                                                                              
  F2(z) = 1 - 0.8314 (+/- 0.006441) z^-1                                      
                                                                              
Sample time: 0.5 minutes                                                      
                                                                              
Parameterization:                                                             
   Polynomial orders:   nb=[2 1]   nc=1   nd=1   nf=[2 1]                     
   nk=[5 10]                                                                  
   Number of free coefficients: 8                                             
   Use "polydata", "getpvec", "getcov" for parameters and their uncertainties.
                                                                              
Status:                                                                       
Termination condition: Near (local) minimum, (norm(g) < tol)..                
Number of iterations: 6, Number of function evaluations: 13                   
                                                                              
Estimated using POLYEST on time domain data "Ze1".                            
Fit to estimation data: 90.75% (prediction focus)                             
FPE: 2.733, MSE: 2.689                                                        
More information in model's "Report" property.                                

Неопределенность для каждого из параметров модели вычисляется к 1 стандартному отклонению и появляется в круглых скобках рядом с каждым значением параметров.

Полиномы C и D дайте числитель и знаменатель шумовой модели, соответственно.

Совет

В качестве альтернативы можно использовать следующий краткий синтаксис, который задает порядки как один вектор:

mbj = bj(Ze1,[2 1 1 1 2 1 5 10]);

bj версия polyest это в частности оценивает структуру модели BJ.

Узнать больше.  Чтобы узнать больше об идентификации моделей полинома ввода - вывода, таких как BJ, см. Модели Полинома Ввода - вывода.

Сравнение Выхода Модели к измеренному Выходу

Сравните выход ARX, пространства состояний и моделей Box-Jenkins к измеренному выходу.

compare(Zv1,marx,mn4sid,mbj)

compare строит измеренный выход в наборе данных валидации против симулированного выхода из моделей. Входные данные от набора данных валидации служат входом к моделям.

Выполните остаточный анализ ARX, пространства состояний и моделей Box-Jenkins.

resid(Zv1,marx,mn4sid,mbj)

Все три модели симулируют выход одинаково хорошо и имеют некоррелированые остаточные значения. Поэтому выберите модель ARX, потому что это является самым простым из трех моделей полинома ввода - вывода и соответственно получает динамику процесса.

Симуляция и предсказание Выхода Модели

Симуляция Выхода Модели

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

Симуляция выхода модели запрашивает следующую информацию:

  • Входные значения к модели

  • Начальные условия для симуляции (также названный начальными состояниями)

Например, следующие команды используют iddata и idinput команды, чтобы создать набор входных данных и использование sim симулировать выход модели:

% Create input for simulation
U = iddata([],idinput([200 2]),'Ts',0.5,'TimeUnit','min');
% Simulate the response setting initial conditions equal to zero
ysim_1 = sim(midproc2,U);

Чтобы максимизировать подгонку между симулированным откликом модели к измеренному выходу для того же входа, можно вычислить начальные условия, соответствующие результатам измерений. Начальные условия оптимальной подгонки могут быть получены при помощи findstates на версии пространства состояний предполагаемой модели. Следующие команды оценивают начальные состояния X0est от набора данных Zv1:

% State-space version of the model needed for computing initial states
midproc2_ss = idss(midproc2);
X0est = findstates(midproc2_ss,Zv1);

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

% Simulation input
Usim = Zv1(:,[],:);
Opt = simOptions('InitialCondition',X0est);
ysim_2 = sim(midproc2_ss,Usim,Opt);

Сравните симулированный и измеренный выход на графике.

figure
plot([ysim_2.y, Zv1.y])
legend({'model output','measured'})
xlabel('time'), ylabel('Output')

Предсказание будущего Выхода

Много приложений системы управления требуют, чтобы вы предсказали будущие выходные параметры динамической системы с помощью прошлых данных о вводе/выводе.

Например, использовать predict предсказать ответ модели пять шагов вперед:

predict(midproc2,Ze1,5)

Сравните предсказанные выходные значения с измеренными выходными значениями. Третий аргумент compare задает предсказание "пять шагов вперед". Когда вы не задаете третий аргумент, compare принимает бесконечный горизонт предсказания и симулирует выход модели вместо этого.

compare(Ze1,midproc2,5)

Использование pe вычислить ошибку предсказания Err между предсказанным выходом midproc2 и измеренный выход. Затем постройте ошибочный спектр с помощью spectrum команда.

[Err] = pe(midproc2,Zv1);
spectrum(spa(Err,[],logspace(-2,2,200)))

Ошибки предсказания построены с доверительным интервалом с 1 стандартным отклонением. Ошибки больше в высоких частотах из-за высокочастотной природы воздействия.

Для просмотра документации необходимо авторизоваться на сайте