Вы находитесь на странице: 1из 20

МИНОБРНАУКИ РОССИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ


ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
(ФГБОУ ВО «ВГУ»)
Физический факультет
Кафедра электроники

Выполнил: Вознюк Антон Викторович


Проверил: Костылев Владимир Иванович

ВГУ, 2021
Оценка простых моделей на основе данных реальных лабораторных
процессов

Этот пример показывает, как разрабатывать и анализировать простые модели


на основе данных реального лабораторного процесса. Мы начнем с
небольшого описания процесса, узнаем, как импортировать данные в набор
инструментов и предварительно обработать / подготовить их, а затем
систематически приступить к оценке параметрических и непараметрических
моделей. После того, как модели были идентифицированы, мы сравниваем
оценочные модели, а также проверяем модель с фактическими выходными
данными эксперимента.
Описание системы
Это тематическое исследование касается данных, собранных с помощью
лабораторного «фена». (Тренажер процесса обратной связи PT326; см. Также
стр. 525 в Ljung, 1999). Процесс работает следующим образом: воздух
проходит через трубку и нагревается на входе. Температура воздуха
измеряется термопарой на выходе. Вход - это напряжение на нагревательном
устройстве, которое представляет собой просто сетку проводов резистора.
Выходной сигнал - температура воздуха на выходе, представленная
измеренным напряжением термопары.
Настройка данных для анализа
Сначала мы загружаем данные ввода-вывода в рабочее пространство
MATLAB®.
load dryer2;

Выходной вектор y2 содержит 1000 измерений напряжения термопары,


которое пропорционально температуре в выходном воздушном потоке.
Вектор u2 содержит 1000 входных точек данных, состоящих из напряжения,
приложенного к нагревателю. Вход был сгенерирован как двоичная
случайная последовательность, которая переключается с одного уровня на
другой с вероятностью 0,2. Время выборки составляет 0,08 секунды.
Следующим шагом является настройка данных как объекта iddata.
dry = iddata(y2,u2,0.08);

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


командном окне MATLAB:
dry
dry =
ВГУ, 2021
Time domain data set with 1000 samples.
Sample time: 0.08 seconds

Outputs Unit (if specified)


y1

Inputs Unit (if specified)


u1

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


команду get:

get(dry)

ans =

struct with fields:

Domain: 'Time'
Name: ''
OutputData: [1000x1 double]
y: 'Same as OutputData'
OutputName: {'y1'}
OutputUnit: {''}
InputData: [1000x1 double]
u: 'Same as InputData'
InputName: {'u1'}
InputUnit: {''}
Period: Inf
InterSample: 'zoh'
Ts: 0.0800
Tstart: []
SamplingInstants: [1000x0 double]
TimeUnit: 'seconds'
ExperimentName: 'Exp1'
Notes: {}
UserData: []

Для лучшего учета рекомендуется давать имена входным и выходным


каналам и единицам времени. Эти имена будут распространяться на
протяжении всего анализа этого объекта iddata:

dry.InputName = 'Heater Voltage';


dry.OutputName = 'Thermocouple Voltage';
dry.TimeUnit = 'seconds';
dry.InputUnit = 'V';
ВГУ, 2021
dry.OutputUnit = 'V';

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

ze = dry(1:300)

ze =

Time domain data set with 300 samples.


Sample time: 0.08 seconds

Outputs Unit (if specified)


Thermocouple Voltage V

Inputs Unit (if specified)


Heater Voltage V

Предварительная обработка данных


Постройте интервал от 200 до 300:

plot(ze(200:300));

Рисунок 1: Снимок измеренных данных феном.

Из приведенного выше графика можно увидеть, что данные не равны


ВГУ, 2021
нулевому среднему значению. Итак, давайте удалим постоянные уровни и
сделаем данные нулевым средним.

ze = detrend(ze);

Тот же набор данных после снятия тренда:

plot(ze(200:300)) %show samples from 200 to 300 of detrended data

Рисунок 2: Данные оценки без отклонения.

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

Теперь, когда в наборе данных был исключен тренд и нет очевидных


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

clf
mi = impulseest(ze); % non-parametric (FIR) model
showConfidence(impulseplot(mi),3); %impulse response with 3 standard
%deviations confidence region

ВГУ, 2021
Рисунок 3: Импульсная характеристика модели FIR, оцененная с
использованием ze.

Заштрихованная область обозначает доверительный интервал 99,7%.


Существует временная задержка (мертвое время) в 3 отсчета перед тем, как
выход реагирует на вход (значительный выход за пределами доверительного
интервала).
Самый простой способ начать процедуру параметрической оценки - это
построить модель в пространстве состояний, в которой порядок модели
определяется автоматически с использованием метода ошибок
прогнозирования. Оценим модель, используя методику оценки ssest:

m1 = ssest(ze);

m1 - это идентифицированная модель пространства состояний в


непрерывном времени, представленная объектом idss. Алгоритм оценки
выбирает 3 в качестве оптимального порядка модели. Чтобы проверить
свойства оцениваемой модели, просто введите имя модели в командном окне:

m1

m1 =
Continuous-time identified state-space model:
dx/dt = A x(t) + B u(t) + K e(t)
y(t) = C x(t) + D u(t) + e(t)
ВГУ, 2021
A =
x1 x2 x3
x1 -0.4839 -2.011 2.092
x2 3.321 -1.913 5.998
x3 1.623 -17.01 -15.61

B =
Heater Volta
x1 -0.05753
x2 0.02004
x3 1.377

C =
x1 x2 x3
Thermocouple -14.07 0.07729 0.04252

D =
Heater Volta
Thermocouple 0

K =
Thermocouple
x1 -0.9457
x2 -0.02097
x3 2.102

Parameterization:
FREE form (all coefficients in A, B, C free).
Feedthrough: none
Disturbance component: estimate
Number of free coefficients: 18
Use "idssdata", "getpvec", "getcov" for parameters and their
uncertainties.

Status:
Estimated using SSEST on time domain data "ze".
Fit to estimation data: 95.32% (prediction focus)
FPE: 0.001621, MSE: 0.001526

Дисплей предполагает, что модель имеет произвольную форму (все записи


матриц A, B и C обрабатывались как свободные параметры) и что оцененная
модель довольно хорошо соответствует данным (соответствие более 90%).
Чтобы получить свойства этой модели, например, чтобы получить матрицу A
дискретного объекта пространства состояний, сгенерированного выше, мы
можем использовать оператор точки:

A = m1.a;

ВГУ, 2021
См. Пример «Объекты данных и моделей на панели инструментов
идентификации системы» для получения дополнительной информации об
объектах модели. Чтобы узнать, какие свойства объекта модели можно
получить, используйте команду get:

get(m1)

A: [3x3 double]
B: [3x1 double]
C: [-14.0706 0.0773 0.0425]
D: 0
K: [3x1 double]
StateName: {3x1 cell}
StateUnit: {3x1 cell}
Structure: [1x1 pmodel.ss]
NoiseVariance: 1.2587e-04
InputDelay: 0
OutputDelay: 0
Ts: 0
TimeUnit: 'seconds'
InputName: {'Heater Voltage'}
InputUnit: {'V'}
InputGroup: [1x1 struct]
OutputName: {'Thermocouple Voltage'}
OutputUnit: {'V'}
OutputGroup: [1x1 struct]
Notes: [0x1 string]
UserData: []
Name: ''
SamplingGrid: [1x1 struct]
Report: [1x1 idresults.ssest]

Чтобы получить значения матриц пространства состояний и их


неопределенности в 1 стандартное отклонение, используйте команду idssdata:

[A,B,C,D,K,~,dA,dB,dC,dD,dK] = idssdata(m1)

A =

-0.4839 -2.0112 2.0917


3.3205 -1.9135 5.9981
1.6235 -17.0096 -15.6070

B =

-0.0575
0.0200
1.3770

ВГУ, 2021
C =

-14.0706 0.0773 0.0425

D =

K =

-0.9457
-0.0210
2.1019

dA =

1.0e+15 *

0.1311 0.1374 0.1131


0.2816 0.2485 0.2494
1.0584 0.8163 0.2650

dB =

1.0e+13 *

0.5775
1.4131
6.0529

dC =

1.0e+14 *

2.6992 2.1307 0.6070

dD =

dK =

1.0e+13 *
ВГУ, 2021
1.8060
4.3377
9.2465

Неопределенности довольно велики, даже если модель хорошо соответствует


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

Анализ оценочной модели

h = bodeplot(m1);

Рисунок 4: График Боде оценочной модели.

Щелкните правой кнопкой мыши график и выберите «Характеристики»>


«Область уверенности». Или используйте команду showConfidence, чтобы
просмотреть дисперсию ответа.

showConfidence(h,3) % 3 standard deviation (99.7%) confidence region

ВГУ, 2021
Рисунок 5: График Боде с доверительной областью 3 стандартных
отклонения.

Точно так же мы можем создать ступенчатый график и связанный с ним


доверительный интервал с 3 стандартными отклонениями. Мы можем
сравнить отклики и связанные с ними дисперсии параметрической модели
m1 с непараметрической моделью mi:

showConfidence(stepplot(m1,'b',mi,'r',3),3)

ВГУ, 2021
Рисунок 6: Пошаговый график моделей m1 и mi с доверительными
областями.

Мы также можем рассмотреть график Найквиста и пометить области


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

Opt = nyquistoptions;
Opt.ShowFullContour = 'off';
showConfidence(nyquistplot(m1,Opt),3)

ВГУ, 2021
Рисунок 7: График Найквиста оценочной модели, показывающий области
неопределенности на определенных частотах.

Графики отклика показывают, что оцененная модель m1 достаточно надежна.

Оценка моделей с заданной структурой

System Identification Toolbox также можно использовать для получения


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

m2 = arx(ze,[2 2 3]);

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

m2

m2 =
Discrete-time ARX model: A(z)y(t) = B(z)u(t) + e(t)
A(z) = 1 - 1.274 z^-1 + 0.3942 z^-2

B(z) = 0.06679 z^-3 + 0.04429 z^-4

Sample time: 0.08 seconds

ВГУ, 2021
Parameterization:
Polynomial orders: na=2 nb=2 nk=3
Number of free coefficients: 4
Use "polydata", "getpvec", "getcov" for parameters and their
uncertainties.

Status:
Estimated using ARX on time domain data "ze".
Fit to estimation data: 95.08% (prediction focus)
FPE: 0.001756, MSE: 0.001687

Непрерывную передаточную функцию с 2 полюсами, одним нулем и 0,2-


секундной транспортной задержкой можно оценить с помощью команды
tfest:

m3 = tfest(ze, 2, 1, 0.2)

m3 =

From input "Heater Voltage" to output "Thermocouple Voltage":


1.183 s + 26.55
exp(-0.2*s) * ---------------------
s^2 + 11.61 s + 28.63

Continuous-time identified transfer function.

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

Status:
Estimated using TFEST on time domain data "ze".
Fit to estimation data: 88.79%
FPE: 0.009126, MSE: 0.008768

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

Насколько хороша оценочная модель? Один из способов узнать это -


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

zv = dry(800:900); % select an independent data set for validation


zv = detrend(zv); % preprocess the validation data
ВГУ, 2021
set(gcf,'DefaultLegendLocation','best')
compare(zv,m1); % perform comparison of simulated output

Рисунок 8: Смоделированный ответ модели и выходные данные проверки.

Здесь можно заметить, что согласие очень хорошее. Показанное значение


«Fit» рассчитывается как:

Fit = 100*(1 - norm(yh - y)/norm(y-mean(y)))

где y - измеренный выход (= | zv.y |), а yh - выход модели m1.

Сравнение оценочных моделей

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


например m1, m2 и m3, с данными проверки zv, мы снова можем
использовать команду compare:

compare(zv,m1,'b',m2,'r',m3,'c');

ВГУ, 2021
Рисунок 9: Сравнение ответов моделей m1, m2, m3 на набор данных
проверки ze.

Графики полюс-ноль для моделей можно получить с помощью iopzplot:

h = iopzplot(m1,'b',m2,'r',m3,'c');

ВГУ, 2021
Рисунок 10: Полюсы и нули моделей m1, m2 и m3.

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


утверждении «3» обозначает количество стандартных отклонений.

showConfidence(h,3);

ВГУ, 2021
Рисунок 11: Карта нулевого полюса с областями неопределенности.

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


сравнить с функцией, полученной с использованием непараметрического
метода спектрального анализа (spa):

gs = spa(ze);

Команда spa создает модель IDFRD. Функцию Боде снова можно


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

w = linspace(0.4,pi/m2.Ts,200);
opt = bodeoptions; opt.PhaseMatching = 'on';
bodeplot(m1,'b',m2,'r',m3,'c',gs,'g',w,opt);
legend('m1','m2','m3','gs')

ВГУ, 2021
Рисунок 12: Отклики Боде m1, m2 и m3 по сравнению с непараметрической
моделью спектральной оценки gs.

Частотные характеристики трех моделей / методов очень близки. Это


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

showConfidence(nyquistplot(m1,'b',m2,'r',m3,'c',gs,'g'),3)

ВГУ, 2021
Рисунок 13: Графики Найквиста моделей m1, m2, m3 и gs.

Непараметрическая модель gs демонстрирует наибольшую неопределенность


в ответе.

ВГУ, 2021