Понимание команды сравнения в Matlab

Я очень озадачен следующим наблюдением Матлаба.

В моей проблеме я пытаюсь оценить модель ARX/ARMAX из дискретных дискретных данных ввода-вывода. Я следую руководству Matlab для определения линейных моделей в командной строке(используя набор инструментов System Identification)

  • Мой набор данных - это 980 пар ввода-вывода (эксперименты) со временем выборки Ts = 10 секунд (с 2 входами, 1 выходом). Я разделил данные my_dataна две подгруппы из 490 экспериментов:experimentalа такжеvalidation,
  • Бег delayest(my_data)показывает, что нет задержки в любом из входов. Следовательноnk1=0а такжеnk2=0,
  • Идентификация заказа с selstrucа такжеarxstruc дает мне выбор для заказов na,nb1а такжеnb2,
  • Я поставилopt=armaxOptions('InitialCondition','z')иметь нулевое начальное условие для системы (я не считаю, что Matlab это переменная оценки).

Учитывая все вышесказанное, я запускаю

my_model = arx(experimental,[6,[2,5],[0,0]],opt)

который дает следующую модель в командной строке ( ссылка на pastebin).

По ссылке выше, если прокрутить вниз, мы можем увидеть, что подходитexperimentalданные довольно хорошо.


И тут возникает мой вопрос:

Если я теперь хочу проверить данные сvalidationподмножество, проводя сравнение сcompare команда:

% the model had zero initial condition as well
opt=compareOptions('InitialCondition','z'); 
[~,fit_vector,~]=compare(validation,my_model,opt);
disp(num2str(cell2mat(fit_vector)))

и это то, что интригует, теперь отображаемое число -109.626 % поместиться.

  • Кто-нибудь знает точное поведение этой команды и почему существует такое несоответствие между подгонкой при генерации модели с arx (в приведенной выше ссылке) и использование compare команда?

  • Я нахожу это очень странным, потому что даже с разными наборами данных experimental а также validationоба они поступают из одного и того же семейства входов (импульсы различной длительности и амплитуды для входа 1; вход 2 является экзогенным входом).

0 ответов

Другие вопросы по тегам