Качество подгонки между тестовыми и эталонными данными для анализа и валидации идентифицированных моделей
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
поэтому является . A 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.1342
fit_nmse = goodnessOfFit(yc,yrefc,'NMSE')
fit_nmse = 1×2
0.0204 0.0180
fit_mse = goodnessOfFit(yc,yrefc,'MSE')
fit_mse = 1×2
1.0811 0.9540
Значение соответствия 0 указывает на идеальную подгонку между опорным и предполагаемым выходами. Значение аппроксимации увеличивается, когда качество аппроксимации уменьшается. Для всех трех функций затрат модель четвертого порядка производит лучшую подгонку, чем модель второго порядка.
x
- Данные для тестированияДанные для тестирования, заданные как матрица или массив ячеек.
Для одного тестового набора данных задайте Ns матрицу N, где Ns - количество выборок, а N - количество каналов. Вы должны задать cost_fun
как 'NRMSE'
или 'NMSE'
использовать многоканальные данные.
Для нескольких наборов тестовых данных задайте массив ячеек с Nd длины, где Nd количество пар «тест-ссылка», и каждая камера содержит одну матрицу данных.
x
не должно содержать никаких NaN
или Inf
значения.
xref
- Справочные данныеСсылочные данные, с которыми можно сравнить x
, заданный как матрица или массив ячеек.
Для одинарного набора ссылочных данных задайте Ns -by - N матрицу, где Ns - количество выборок и N - количество каналов. xref
должен быть того же размера, что и x
. Вы должны задать cost_fun
как 'NRMSE'
или 'NMSE'
использовать многоканальные данные.
Для нескольких наборов ссылочных данных задайте массив ячеек с Nd длины, где Nd количество пар «тест-ссылка», и каждая камера содержит одну матрицу ссылочных данных. Как и в случае с отдельными матрицами данных, размеры массива ячеек для x
и xref
должен совпадать. Каждый i й элемент fit
соответствует парам i-х камер x
и xref
.
xref
не должно содержать никаких NaN
или Inf
значения.
cost_func
- Функция затрат'MSE'
| 'NRMSE'
| 'NMSE'
Функция стоимости для определения качества подгонки, заданная как одно из следующих значений. В уравнениях fit значений применяется к одной паре тестовых и эталонных наборов данных.
Значение | Описание | Уравнение | Примечания |
---|---|---|---|
'MSE' | Средняя квадратичная невязка |
где Ns - количество выборок, а ‖ указывает на 2-норму вектора. | fit является скаляром. |
'NRMSE' | Нормированная корневая средняя квадратичная невязка |
где ‖ указывает на 2-норму вектора. | fit является вектором-строкой. |
'NMSE' | Нормированная средняя квадратичная невязка |
| fit является вектором-строкой. |
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 -by - Nd, где N - количество каналов (столбцов данных), а Nd представляет количество тестовых пар. Каждый элемент fit
содержит значения качества подгонки для соответствующих тестовых данных и ссылки пары.
Каждый элемент fit
содержит значения качества подгонки для соответствующих тестовых данных и ссылки пары.
Возможные значения для отдельных элементов подгонки зависят от выбора cost_func
.
Если cost_func
является 'MSE'
, каждый fit
значение является положительным скаляром, который растет с ошибкой между тестом и эталонными данными. A fit
значение 0
указывает на идеальное соответствие между тестовыми и эталонными данными.
Если cost_func
является 'NRMSE'
или 'NMSE'
, fit
значения варьируются между - Inf
и 1.
0
- Идеальная подгонка для ссылки на данные (нулевая ошибка)
- Inf
- Плохая подгонка
1
— x
не лучше, чем прямая линия при совпадении xref
goodnessOfFit
: Результат подгонки представляет норму ошибки для всех трех функций затрат со значением нуля, указывающим на идеальную подгонкуПоведение изменено в R2020a
goodnessOfFit
теперь возвращает E нормы ошибки как значение соответствия для всех трех функций затрат (MSE, NRMSE и NMSE). Ранее, goodnessOfFit
возвращено дополнение нормы ошибки 1- E для значений соответствия, которые использовали функции NRMSE или NMSE. Это изменение позволяет последовательно интерпретировать аппроксимацию по трем функциям стоимости с идеальным значением аппроксимации в нуле, представляющим идеальную подгонку.
Ранее вычисленные значения подгонки NRMSE и NMSE являются дополнениями значений подгонки, вычисленных текущим программным обеспечением. Точно так же значение подгонки NRMSE теперь является единственным дополнением подгонки, используемого в процентном значении, которое compare
вычисляет. Для примера, если предыдущий goodnessOfFit
значение подгонки было 0,8, значение подгонки тока было 0,2. A goodnessOfFit
значение аппроксимации 0,2 эквивалентно compare
процент подгонки 80%.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.