Работа с многопараметрическими системами: идентификация и анализ

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

Набор данных

Начнем с просмотра набора данных SteamEng.

load SteamEng

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

Выходные выходы: Сгенерированное напряжение в генераторе и Вращательная скорость генератора (Частота сгенерированного переменного напряжения). Время дискретизации составило 50 мс.

Сначала соберите измеренные каналы в iddata объект:

steam = iddata([GenVolt,Speed],[Pressure,MagVolt],0.05);
steam.InputName  = {'Pressure';'MagVolt'};
steam.OutputName = {'GenVolt';'Speed'};

Давайте посмотрим на данные

plot(steam(:,1,1))

Figure contains 2 axes. Axes 1 with title GenVolt contains an object of type line. This object represents untitled1. Axes 2 with title Pressure contains an object of type line. This object represents untitled1.

plot(steam(:,1,2))

Figure contains 2 axes. Axes 1 with title GenVolt contains an object of type line. This object represents untitled1. Axes 2 with title MagVolt contains an object of type line. This object represents untitled1.

plot(steam(:,2,1))

Figure contains 2 axes. Axes 1 with title Speed contains an object of type line. This object represents untitled1. Axes 2 with title Pressure contains an object of type line. This object represents untitled1.

plot(steam(:,2,2))

Figure contains 2 axes. Axes 1 with title Speed contains an object of type line. This object represents untitled1. Axes 2 with title MagVolt contains an object of type line. This object represents untitled1.

Пошаговая и импульсные характеристики

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

mi = impulseest(steam,50);
clf, step(mi)

Figure contains 4 axes. Axes 1 with title From: Pressure contains an object of type line. This object represents mi. Axes 2 contains an object of type line. This object represents mi. Axes 3 with title From: MagVolt contains an object of type line. This object represents mi. Axes 4 contains an object of type line. This object represents mi.

Ответы с доверительными областями

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

showConfidence(impulseplot(mi),3)

Figure contains 4 axes. Axes 1 with title From: Pressure contains 2 objects of type line. This object represents mi. Axes 2 contains 2 objects of type line. This object represents mi. Axes 3 with title From: MagVolt contains 2 objects of type line. This object represents mi. Axes 4 contains 2 objects of type line. This object represents mi.

Очевидно, что доминируют off-диагональные влияния (Сравните y-шкалы!) То есть GenVolt в основном зависит от MagVolt (не большой динамики) и Speed в первую очередь зависит от Pressure. Видимо ответ от MagVolt на Speed не очень значимо.

Модель с двумя входами и двумя выходами

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

mp = ssest(steam(1:250))
mp =
  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)
 
  A = 
            x1       x2       x3       x4
   x1   -29.43   -4.561   0.5994   -5.199
   x2   0.4848  -0.8662   -4.101   -2.336
   x3    2.839    5.084   -8.566   -3.855
   x4   -12.13   0.9224    1.818   -34.29
 
  B = 
       Pressure   MagVolt
   x1    0.1033    -1.617
   x2   -0.3028  -0.09415
   x3    -1.566    0.2953
   x4  -0.04476    -2.681
 
  C = 
                 x1       x2       x3       x4
   GenVolt   -16.39   0.3767  -0.7566    2.808
   Speed     -5.623    2.246  -0.5356    3.423
 
  D = 
            Pressure   MagVolt
   GenVolt         0         0
   Speed           0         0
 
  K = 
        GenVolt     Speed
   x1   -0.3555   0.08531
   x2  -0.02308     5.195
   x3     1.526     2.132
   x4     1.787   0.03216
 
Parameterization:
   FREE form (all coefficients in A, B, C free).
   Feedthrough: none
   Disturbance component: estimate
   Number of free coefficients: 40
   Use "idssdata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                                 
Estimated using SSEST on time domain data.              
Fit to estimation data: [86.9;74.84]% (prediction focus)
FPE: 3.896e-05, MSE: 0.01414                            

Сравните с переходными характеристиками, оцененными непосредственно из данных:

h = stepplot(mi,'b',mp,'r',2); % Blue for direct estimate, red for mp
showConfidence(h)

Figure contains 4 axes. Axes 1 with title From: Pressure contains 2 objects of type line. These objects represent mi, mp. Axes 2 contains 2 objects of type line. These objects represent mi, mp. Axes 3 with title From: MagVolt contains 2 objects of type line. These objects represent mi, mp. Axes 4 contains 2 objects of type line. These objects represent mi, mp.

Соглашение является хорошим с изменением, допустимым в показанных доверию границах.

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

compare(steam(251:450),mp)

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Validation data (GenVolt), mp: 83.55%. Axes 2 contains 2 objects of type line. These objects represent Validation data (Speed), mp: 39.33%.

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

Спектральный анализ

Точно так же сравнения частотной характеристики mp с помощью оценки спектрального анализа дает:

msp = spa(steam);

bode(msp,mp)

clf, bode(msp,'b',mp,'r')

Figure contains 8 axes. Axes 1 with title From: Pressure contains 2 objects of type line. These objects represent msp, mp. Axes 2 contains 2 objects of type line. These objects represent msp, mp. Axes 3 contains 2 objects of type line. These objects represent msp, mp. Axes 4 contains 2 objects of type line. These objects represent msp, mp. Axes 5 with title From: MagVolt contains 2 objects of type line. These objects represent msp, mp. Axes 6 contains 2 objects of type line. These objects represent msp, mp. Axes 7 contains 2 objects of type line. These objects represent msp, mp. Axes 8 contains 2 objects of type line. These objects represent msp, mp.

Можно щелкнуть правой кнопкой мыши по графику и выбрать различные пары ввода-вывода для внешнего вида при закрытии графика. Вы также можете выбрать 'Характеристики: Доверие Область' для изображения надежности диаграммы Боде.

Как и прежде ответ от MagVolt на Speed является незначительным и трудным для оценки.

Модели с одним входом и одним выходом (SISO)

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

Эти переходные характеристики указывают, что MagVolt в первую очередь влияет на GenVolt в то время как Pressure в основном влияет на Speed. Создайте для этого две простые модели SISO: И имена, и номера могут использоваться при выборе каналов.

m1 = tfest(steam(1:250,'Speed','Pressure'),2,1); % TF model with 2 poles 1 zero
m2 = tfest(steam(1:250,1,2),1,0) % Simple TF model with 1 pole.
m2 =
 
  From input "MagVolt" to output "GenVolt":
    18.57
  ---------
  s + 43.53
 
Continuous-time identified transfer function.

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

Status:                                   
Estimated using TFEST on time domain data.
Fit to estimation data: 73.34%            
FPE: 0.04645, MSE: 0.04535                

Сравните эти модели с моделью MIMO mp:

compare(steam(251:450),m1,m2,mp)

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Validation data (GenVolt), m2: 80.33%, mp: 83.55%. Axes 2 contains 3 objects of type line. These objects represent Validation data (Speed), m1: 47.2%, mp: 39.33%.

Модели SISO хорошо сравниваются с полной моделью. Давайте теперь сравним годографы Найквиста. m1 синяя, m2 зеленый и mp красный. Обратите внимание, что сортировка выполняется автоматически. mp описывает все входные выходные пары, в то время как m1 содержит только Pressure на Speed и m2 содержит только MagVolt на GenVolt.

clf
showConfidence(nyquistplot(m1,'b',m2,'g',mp,'r'),3)

Figure contains 4 axes. Axes 1 with title From: Pressure contains 6 objects of type line. This object represents mp. Axes 2 contains 12 objects of type line. These objects represent m1, mp. Axes 3 with title From: MagVolt contains 12 objects of type line. These objects represent m2, mp. Axes 4 contains 6 objects of type line. This object represents mp.

Модели SISO делают хорошую работу, чтобы воспроизвести свои соответствующие выходы.

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

Модель двух входов и одинарных выходов

Сделать хорошую работу на выход GenVoltможно использовать оба входов.

m3 = armax(steam(1:250,'GenVolt',:),'na',4,'nb',[4 4],'nc',2,'nk',[1 1]);
m4 = tfest(steam(1:250,'GenVolt',:),2,1);
compare(steam(251:450),mp,m3,m4,m2)

Figure contains 2 axes. Axes 1 contains 5 objects of type line. These objects represent Validation data (GenVolt), mp: 83.55%, m3: 90.18%, m4: 89.38%, m2: 80.33%. Axes 2 contains 2 objects of type line. These objects represent Validation data (Speed), mp: 39.33%.

При включении входа было возможно улучшение примерно на 10% Pressure в моделях m3 (дискретное время) и m4 (непрерывное время), по сравнению с m2 который использует просто MagVolt как вход.

Объединение моделей SISO

При необходимости две модели SISO m1 и m2 могут быть собраны как одна модель «Off-Diagonal» путем создания нуля манекена:

mdum = idss(zeros(2,2),zeros(2,2),zeros(2,2),zeros(2,2));
mdum.InputName = steam.InputName;
mdum.OutputName = steam.OutputName;
mdum.ts = 0; % Continuous time model
m12 = [idss(m1),mdum('Speed','MagVolt')];    % Adding Inputs. 
                                             % From both inputs to Speed
m22 = [mdum('GenVolt','Pressure'),idss(m2)]; % Adding Inputs. 
                                             % From both inputs to GenVolt

mm = [m12;m22]; % Adding the outputs to a 2-by-2 model.

compare(steam(251:450),mp,mm)

Figure contains 2 axes. Axes 1 contains 3 objects of type line. These objects represent Validation data (GenVolt), mp: 83.55%, mm: 80.33%. Axes 2 contains 3 objects of type line. These objects represent Validation data (Speed), mp: 39.33%, mm: 47.2%.

Очевидно, что модель «Off-Diagonal» mm выполняет как m1 и m2 в пояснении выходов.