goodnessOfFit
用于分析和验证辨识模型的测试数据和参考数据之间的拟合优度
说明
goodnessOfFit
返回表示测试数据集和参考数据集之间的误差范数的拟合值。如果您想将仿真模型输出与测量数据进行比较和可视化,另请参阅 compare
。
示例
找到测量输出数目据和估计模型的仿真输出之间的拟合优度。
获得测量的输出。
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);
拟合结果是等效的。
找出两个模型的测量输出和估计输出之间的拟合优度。
从 iddata2
获取输入-输出测量值 z2
。将测量的输出复制到参考输出 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.1345
fit_nmse = goodnessOfFit(yc,yrefc,'NMSE')
fit_nmse = 1×2
0.0204 0.0181
fit_mse = goodnessOfFit(yc,yrefc,'MSE')
fit_mse = 1×2
1.0811 0.9586
拟合值 0 表示参考输出和估计输出之间完美拟合。随着拟合优度的降低,拟合值会上升。对于所有三个成本函数,四阶模型比二阶模型产生更好的拟合效果。
输入参数
要测试的数据,指定为矩阵或元胞数组。
对于单个测试数据集,指定一个 Ns×N 矩阵,其中 Ns 是采样数,N 是通道数。您必须将
cost_fun
指定为'NRMSE'
或'NMSE'
才能使用多通道数据。对于多个测试数据集,指定长度为 Nd 的元胞数组,其中 Nd 是测试到参考对的数量,每个元胞都都包含一个数据矩阵。
x
不能包含任何 NaN
或 Inf
值。
输出参量
测试和参考数据集对之间的拟合优度,以标量、行向量或元胞数组的形式返回。
对于单个测试和参考数据集对,
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
的每个元素都包含相应测试数据和参考对的拟合优度值。
各个拟合元素的可能值取决于 cost_func
的选择。
如果
cost_func
是'MSE'
,则每个fit
值都是一个正标量,它会随着测试数据和参考数据之间的误差而增长。fit
值0
表示测试数据和参考数据完全匹配。如果
cost_func
是'NRMSE'
或'NMSE'
,则fit
值在 -Inf
和 1 之间变化。0
- 与参考数据完美拟合(零误差)-
Inf
- 不正确的拟合1
-x
在匹配xref
方面并不比直线好
版本历史记录
在 R2012a 中推出goodnessOfFit
现在返回误差范数 E 作为所有三个成本函数(MSE、NRMSE 和 NMSE)的拟合值。以前,对于使用 NRMSE 或 NMSE 成本函数的拟合值,goodnessOfFit
返回误差范数的补数,1-E。这种变化使得三个成本函数的拟合值解释保持一致,其中理想拟合值零代表完美拟合。
先前计算的 NRMSE 和 NMSE 拟合值是使用当前软件计算的拟合值的补码。类似地,NRMSE 拟合值现在是 compare
计算的百分比值中使用的拟合值的补码。例如,如果先前的 goodnessOfFit
拟合值 0.8,则当前拟合值 0.2。goodnessOfFit
拟合值 0.2 相当于 compare
拟合百分比 80%。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)