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

Этот пример показывает, как иметь дело с данными с несколькими каналами ввода и вывода (данные 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.3027  -0.09415
   x3    -1.566    0.2953
   x4  -0.04479    -2.681
 
  C = 
                 x1       x2       x3       x4
   GenVolt   -16.39   0.3767  -0.7567    2.808
   Speed     -5.623    2.246  -0.5357    3.423
 
  D = 
            Pressure   MagVolt
   GenVolt         0         0
   Speed           0         0
 
  K = 
        GenVolt     Speed
   x1   -0.3555   0.08528
   x2  -0.02314     5.195
   x3     1.526     2.132
   x4     1.787   0.03215
 
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.898e-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 в объяснении выходных параметров.

Дополнительная информация

Для получения дополнительной информации об идентификации динамических систем с помощью System Identification Toolbox™ посещают страницу информации о продукте System Identification Toolbox.