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

В этом примере показано, как иметь дело с данными с несколькими каналами ввода и вывода (данные 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))

plot(steam(:,1,2))

plot(steam(:,2,1))

plot(steam(:,2,2))

Шаг и импульсные характеристики

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

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

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

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

showConfidence(impulseplot(mi),3)

Очевидно недиагональные влияния доминируют (Сравните 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)

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

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

compare(steam(251:450),mp)

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

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

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

msp = spa(steam);

bode(msp,mp)

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

Можно щелкнуть правой кнопкой по графику и выбрать различные пары ввода-вывода для внимательных рассмотрений. Можно также выбрать '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)

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

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

Модели 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)

Приблизительно 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)

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