Качество подгонки между тестовыми и справочными данными для анализа и валидацией идентифицированных моделей
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
поэтому . 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 указывает на совершенную подгонку между ссылкой и оценило выходные параметры. Подходящие повышения значения как подходящее совершенство уменьшаются. Для всех трех функций стоимости модель четвертого порядка производит лучшую подгонку, чем модель второго порядка.
x
— Данные, чтобы протестироватьДанные, чтобы протестировать в виде матричного или массива ячеек.
Для одного набора тестовых данных задайте Ns-by-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 th элемент fit
соответствует парам i th ячейки 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 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
goodnessOfFit
: Результат подгонки представляет ошибочную норму для всех трех функций стоимости со значением нуля, указывающего на совершенную подгонкуПоведение изменяется в R2020a
goodnessOfFit
теперь возвращает ошибочную норму E как подходящее значение для всех трех функций стоимости (MSE, NRMSE и NMSE). Ранее goodnessOfFit
возвращенный поразрядное дополнение до единицы ошибочной нормы, 1-E, для подходящих значений, которые использовали NRMSE или функции стоимости NMSE. Это изменение позволяет сопоставимую интерпретацию подходящего значения через эти три функции стоимости с идеальным подходящим значением нуля, представляющего совершенную подгонку.
Ранее вычисленный NRMSE и значения подгонки NMSE являются поразрядными дополнениями до единицы подходящих значений, вычисленных с текущим программным обеспечением. Точно так же значение подгонки NRMSE является теперь поразрядным дополнением до единицы подгонки, используемой в значении процента что compare
вычисляет. Например, если предыдущий goodnessOfFit
подходящее значение было 0.8, текущее подходящее значение 0.2. goodnessOfFit
подходящее значение 0,2 эквивалентно compare
подходящий процент 80%.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.