Оценка моделей с использованием armax

Этот пример показывает, как оценить линейную, полиномиальную модель со структурой ARMAX для системы с тремя входами и одним выходом (MISO) с помощью итерационного метода оценки armax. Для получения сводных данных всех доступных команд оценки в тулбоксе, смотрите Команды оценки модели.

Загрузка выборочных данных набора z8 с тремя входами и одним выходом, измеренным на 1 -секундные интервалы и содержащие 500 выборок данных.

load iddata8

Использование armax чтобы создать idpoly объект модели и оценка параметров:

A(q)y(t)=i=1nuBi(q)ui(t-nki)+C(q)e(t)

Как правило, вы пробуете различные порядки моделей и сравниваете результаты, в конечном счете выбирая самую простую модель, которая лучше всего описывает динамику системы. Следующая команда задает набор данных оценки, z8 , и порядки полиномов A, B и C как na , nb , и nc, соответственно. nk от [0 0 0] указывает, что отсутствует задержка на входе для всех трех входных каналов.

opt = armaxOptions;
opt.Focus = 'simulation';
opt.SearchOptions.MaxIterations = 50;
opt.SearchOptions.Tolerance = 1e-5;
na = 4;
nb = [3 2 3];
nc = 4;
nk = [0 0 0];
m_armax = armax(z8, [na nb nc nk], opt);

Focus, Tolerance, и MaxIter являются опциями оценки, которые конфигурируют целевую функцию оценки и атрибуты алгоритма поиска. The Focus опция определяет, оптимизирована ли модель для приложений симуляции или предсказания. The Tolerance и MaxIter опции поиска задают, когда остановить оценку. Для получения дополнительной информации об этих свойствах см. armaxOptions страница с описанием.

armax является версией polyest с упрощенным синтаксисом структуры модели ARMAX. armax метод оба создает idpoly моделирует объект и оценивает его параметры.

Просмотрите информацию о получившемся объекте модели.

m_armax
m_armax =
Discrete-time ARMAX model: A(z)y(t) = B(z)u(t) + C(z)e(t)            
  A(z) = 1 - 1.284 z^-1 + 0.3048 z^-2 + 0.2648 z^-3 - 0.05708 z^-4   
                                                                     
  B1(z) = -0.07547 + 1.087 z^-1 + 0.7166 z^-2                        
                                                                     
  B2(z) = 1.019 + 0.1142 z^-1                                        
                                                                     
  B3(z) = -0.06739 + 0.06828 z^-1 + 0.5509 z^-2                      
                                                                     
  C(z) = 1 - 0.06096 z^-1 - 0.1296 z^-2 + 0.02489 z^-3 - 0.04699 z^-4
                                                                     
Sample time: 1 seconds
  
Parameterization:
   Polynomial orders:   na=4   nb=[3 2 3]   nc=4   nk=[0 0 0]
   Number of free coefficients: 16
   Use "polydata", "getpvec", "getcov" for parameters and their uncertainties.

Status:                                          
Estimated using ARMAX on time domain data "z8".  
Fit to estimation data: 80.86% (simulation focus)
FPE: 2.888, MSE: 0.9868                          

m_armax является idpoly объект модели. Коэффициенты представляют оцененные параметры этой полиномиальной модели. Можно использовать present(m_armax) чтобы показать дополнительную информацию о модели, включая неопределенности параметра.

Просмотрите все значения свойств для этой модели.

get(m_armax)
                 A: [1 -1.2836 0.3048 0.2648 -0.0571]
                 B: {[-0.0755 1.0870 0.7166]  [1.0188 0.1142]  [1x3 double]}
                 C: [1 -0.0610 -0.1296 0.0249 -0.0470]
                 D: 1
                 F: {[1]  [1]  [1]}
    IntegrateNoise: 0
          Variable: 'z^-1'
           IODelay: [0 0 0]
         Structure: [1x1 pmodel.polynomial]
     NoiseVariance: 2.7984
        InputDelay: [3x1 double]
       OutputDelay: 0
                Ts: 1
          TimeUnit: 'seconds'
         InputName: {3x1 cell}
         InputUnit: {3x1 cell}
        InputGroup: [1x1 struct]
        OutputName: {'y1'}
        OutputUnit: {''}
       OutputGroup: [1x1 struct]
             Notes: [0x1 string]
          UserData: []
              Name: ''
      SamplingGrid: [1x1 struct]
            Report: [1x1 idresults.polyest]

The Report свойство модели содержит подробную информацию о результатах оценки. Чтобы просмотреть свойства и значения внутри Report, используйте запись через точку. Для примера:

m_armax.Report
ans = 
              Status: 'Estimated using ARMAX with simulation focus'
              Method: 'ARMAX'
    InitialCondition: 'zero'
                 Fit: [1x1 struct]
          Parameters: [1x1 struct]
         OptionsUsed: [1x1 idoptions.polyest]
           RandState: [1x1 struct]
            DataUsed: [1x1 struct]
         Termination: [1x1 struct]

Это действие отображает содержимое отчета об оценке, такого как измерения качества модели (Fit), критерий окончания поиска (Termination) и запись оценочных данных (DataUsed) и опции (OptionsUsed).

Похожие примеры

Подробнее о