goodnessOfFit

Качество подгонки между тестовыми и справочными данными для анализа и валидацией идентифицированных моделей

Описание

goodnessOfFit возвращает подходящие значения, которые представляют ошибочную норму между наборами тестовых и справочных данных. Если вы хотите сравнить и визуализировать симулированный выход модели с данными об измерении, см. также compare.

пример

fit = goodnessOfFit(x,xref,cost_func) возвращает качество подгонки между тестовыми данными x и справочные данные xref использование функции стоимости cost_func. fit количественное представление близости x к xref. Чтобы выполнить несколько сравнений подгонки теста к ссылке, можно задать x и xref как массивы ячеек равного размера, которые содержат несколько наборов тестовых и справочных данных. С входными параметрами массива ячеек, fit возвращает массив подходящих значений.

Примеры

свернуть все

Найдите качество подгонки между измеренными выходными данными и симулированным выходом предполагаемой модели.

Получите измеренный выход.

load iddata1 z1
yref = z1.y;

z1 iddata объект, содержащий измеренные данные ввода - вывода. z1.y измеренный выход.

Оцените модель передаточной функции второго порядка и симулируйте выход y_est модели.

sys = tfest(z1,2);
y_est = sim(sys,z1(:,[],:)); 

Вычислите качество подгонки или ошибочную норму, между измеренными и предполагаемыми выходными параметрами. Задайте нормированную среднеквадратическую ошибку (NRMSE) как функцию стоимости.

cost_func = 'NRMSE';
y = y_est.y;
fit = goodnessOfFit(y,yref,cost_func) 
fit = 0.2943

В качестве альтернативы можно использовать compare вычислить подгонку. compare использует функцию стоимости NRMSE и описывает подходящий процент с помощью поразрядного дополнения до единицы ошибочной нормы. Подходящее отношение между compare и goodnessOfFit поэтому fitcompare=(1-fitgof)*100. compare результат 100% эквивалентен goodnessOfFit результат 0.

Задайте начальное условие нуля совпадать с начальным условием что goodnessOfFit принимает.

opt = compareOptions('InitialCondition','z');
compare(z1,sys,opt);

Результаты подгонки эквивалентны.

Найдите качество подгонки между измеренными и предполагаемыми выходными параметрами для двух моделей.

Получите измерения ввода - вывода z2 от iddata2. Скопируйте измеренный выход в ссылочный выход yref.

load iddata2 z2
yref = z2.y;

Оцените второго порядка и модели передаточной функции четвертого порядка с помощью z2.

sys2 = tfest(z2,2);
sys4 = tfest(z2,4);

Симулируйте обе системы, чтобы получить оцененные выходные параметры.

y_sim2 = sim(sys2,z2(:,[],:));
y2 = y_sim2.y;
y_sim4 = sim(sys4,z2(:,[],:));
y4 = y_sim4.y;

Создайте массивы ячеек из ссылки, и оценил выходные параметры. Набор справочных данных является тем же самым для обоих сравнений модели, поэтому создайте идентичные ссылочные ячейки.

yrefc = {yref yref};
yc = {y2 y4};

Вычислите fit значения для этих трех функций стоимости.

fit_nrmse = goodnessOfFit(yc,yrefc,'NRMSE')
fit_nrmse = 1×2

    0.1429    0.1439

fit_nmse = goodnessOfFit(yc,yrefc,'NMSE')
fit_nmse = 1×2

    0.0204    0.0207

fit_mse = goodnessOfFit(yc,yrefc,'MSE')
fit_mse = 1×2

    1.0811    1.0967

Подходящее значение 0 указывает на совершенную подгонку между ссылкой и оценило выходные параметры. Подходящие повышения значения как подходящее совершенство уменьшаются. Для всех трех функций стоимости модель четвертого порядка производит лучшую подгонку, чем модель второго порядка.

Входные параметры

свернуть все

Данные, чтобы протестировать в виде матричного или массива ячеек.

  • Для одного набора тестовых данных задайте Ns-by-N матрица, где Ns является количеством выборок, и N является количеством каналов. Необходимо задать cost_fun как 'NRMSE' или 'NMSE' использовать данные нескольких-каналов.

  • Для нескольких наборов тестовых данных задайте массив ячеек длины Nd, где Nd является количеством пар теста к ссылке, и каждая ячейка содержит одну матрицу данных.

x не должен содержать NaN или Inf значения.

Справочные данные, с которыми можно сравнить xВ виде матричного или массива ячеек.

  • Для одного набора справочных данных задайте Ns-by-N матрица, где Ns является количеством выборок, и N является количеством каналов. xref должен быть одного размера с x. Необходимо задать cost_fun как 'NRMSE' или 'NMSE' использовать данные нескольких-каналов.

  • Для нескольких наборов справочных данных задайте массив ячеек длины Nd, где Nd является количеством пар теста к ссылке, и каждая ячейка содержит одну матрицу справочных данных. Как с отдельными матрицами данных, размерами массива ячеек для x и xref должен соответствовать. Каждый i th элемент fit соответствует парам i th ячейки x и xref.

xref не должен содержать NaN или Inf значения.

Функция стоимости, чтобы определить качество подгонки в виде одного из следующих значений. В уравнениях значение fit применяется к одному соединению наборов тестовых и справочных данных.

ЗначениеОписаниеУравнениеПримечания
'MSE'Среднеквадратическая ошибка

fit=xxref2Ns

где Ns является количеством выборок, и ‖ указывает на 2-норму вектора.

fit является скаляром.
'NRMSE'Нормированная среднеквадратическая ошибка

fit(i)=xref(:,i)x(:,i)xref(:,i)mean(xref(:,i))

где ‖ указывает на 2-норму вектора. fit вектор-строка из длины N и i = 1..., N, где N является количеством каналов.

fit является вектором-строкой. 'NRMSE' функция стоимости, используемая compare.

'NMSE'Нормированная среднеквадратическая ошибка

fit(i)=xref(:,i)x(:,i)2xref(:,i)mean(xref(:,i))2

fit является вектором-строкой.

Выходные аргументы

свернуть все

Качество подгонки между парами тестовых и справочных данных, возвращенными как скаляр, вектор-строка или массив ячеек.

  • Для одной пары набора тестовых и справочных данных, fit возвращен как скалярный или вектор-строка.

    • Если cost_fun 'MSE', затем fit скаляр.

    • Если cost_fun 'NRMSE' или 'NMSE', затем fit вектор-столбец длины N, где N является количеством каналов.

  • Для нескольких набор тестов и набор данных и ссылочные пары, где x и xref массивы ячеек длины ND, fit возвращен как вектор или матрица.

    • Если cost_fun 'MSE', затем fit вектор-строка из длины ND.

    • Если cost_fun 'NRMSE' или 'NMSE', затем fit матрица размера N Nd, где N является количеством каналов (столбцы данных), и Nd представляет количество тестовых пар. Каждый элемент fit содержит значения качества подгонки для соответствующих тестовых данных и ссылочной пары.

    Каждый элемент fit содержит значения качества подгонки для соответствующих тестовых данных и ссылочной пары.

Возможные значения для отдельных подходящих элементов зависят от выбора cost_func.

  • Если cost_func 'MSE', каждый fit значение является положительной скалярной величиной, которая растет с ошибкой между тестовыми и справочными данными. fit значение 0 указывает на идеальную пару между тестовыми и справочными данными.

  • Если cost_func 'NRMSE' или 'NMSE', fit значения варьируются между-Inf и 1.

    • 0 — Совершенная подгонка к справочным данным (обнуляют ошибку),

    • Inf — Плохая подгонка

    • 1 X не лучше, чем прямая линия при соответствии с xref

Вопросы совместимости

развернуть все

Поведение изменяется в R2020a

Смотрите также

| | |

Представленный в R2012a