Контакт с многомерными системами: идентификация и анализ

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

Набор данных

Мы запускаем путем рассмотрения набора данных SteamEng.

load SteamEng

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

Выходные параметры являются Сгенерированным напряжением в генераторе, и Скорость вращения генератора (Частота сгенерированного напряжения переменного тока).The шаг расчета составляла 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 objects. Axes object 1 with title GenVolt contains an object of type line. This object represents untitled1. Axes object 2 with title Pressure contains an object of type line. This object represents untitled1.

plot(steam(:,1,2))

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

plot(steam(:,2,1))

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

plot(steam(:,2,2))

Figure contains 2 axes objects. Axes object 1 with title Speed contains an object of type line. This object represents untitled1. Axes object 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 objects. Axes object 1 with title From: Pressure contains an object of type line. This object represents mi. Axes object 2 contains an object of type line. This object represents mi. Axes object 3 with title From: MagVolt contains an object of type line. This object represents mi. Axes object 4 contains an object of type line. This object represents mi.

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

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

showConfidence(impulseplot(mi),3)

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

Очевидно недиагональные влияния доминируют (Сравните 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.2
   x2   0.4849  -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.04477    -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.0853
   x2  -0.0231    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.897e-05, MSE: 0.01414                            

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

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

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

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

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

compare(steam(251:450),mp)

Figure contains 2 axes objects. Axes object 1 contains 2 objects of type line. These objects represent Validation data (GenVolt), mp: 83.55%. Axes object 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 objects. Axes object 1 with title From: Pressure contains 2 objects of type line. These objects represent msp, mp. Axes object 2 contains 2 objects of type line. These objects represent msp, mp. Axes object 3 contains 2 objects of type line. These objects represent msp, mp. Axes object 4 contains 2 objects of type line. These objects represent msp, mp. Axes object 5 with title From: MagVolt contains 2 objects of type line. These objects represent msp, mp. Axes object 6 contains 2 objects of type line. These objects represent msp, mp. Axes object 7 contains 2 objects of type line. These objects represent msp, mp. Axes object 8 contains 2 objects of type line. These objects represent msp, mp.

Можно щелкнуть правой кнопкой по графику и выбрать различные пары ввода-вывода для внимательных рассмотрений. Можно также выбрать 'Characteristics: Confidence Region' для изображения надежности диаграммы Боде.

Как перед ответом от 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:

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

Figure contains 2 axes objects. Axes object 1 contains 3 objects of type line. These objects represent Validation data (GenVolt), m2: 80.33%, mp: 83.55%. Axes object 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 objects. Axes object 1 with title From: Pressure contains 5 objects of type line. This object represents mp. Axes object 2 contains 10 objects of type line. These objects represent m1, mp. Axes object 3 with title From: MagVolt contains 10 objects of type line. These objects represent m2, mp. Axes object 4 contains 5 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 objects. Axes object 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 object 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 objects. Axes object 1 contains 3 objects of type line. These objects represent Validation data (GenVolt), mp: 83.55%, mm: 80.33%. Axes object 2 contains 3 objects of type line. These objects represent Validation data (Speed), mp: 39.33%, mm: 47.2%.

Очевидно модель "Off-Diagonal" mm выполняет как m1 и m2 в объяснении выходных параметров.