matlab中resnorm什么意思

2025-01-19 12:54:28
推荐回答(2个)
回答1:

就是误差的代数和,比如如下程序,

clear

ydata = [0.42  0.45 0.47 0.51 0.55 0.61 0.67 0.72 ];

xdata = [1163.4 1177.6 1191.9 1206.2 1220.51234.8 1249.1 1263.4 ]

xdata = xdata/1000;

plot(xdata, ydata,'-rs','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','g',...

'MarkerSize',10)

hold on

xlabel('亮温')

ylabel('发射率')

legend('Kriging.','IDW.','SFM.','Location','north')

hold on

x0 = [1,1,1,1];

[x,resnorm] =lsqcurvefit(@myfun,x0,xdata,ydata) %回车后;

yy=myfun(x,xdata);

result=[ydata'yy' (yy-ydata)']  %依次显示的原值、拟合值和误差;

plot(xdata, yy, '-*','LineWidth',2,...

'MarkerEdgeColor','k',...

'MarkerFaceColor','y',...

'MarkerSize',10)

其最后结果为:

x =  174.6944 -417.2740  330.2620  -86.2558

resnorm =  1.6039e-004

拟合的结果:result =

0.4200    0.4235    0.0035

0.4500    0.4425   -0.0075

0.4700    0.4720    0.0020

0.5100    0.5104    0.0004

0.5500    0.5563    0.0063

0.6100    0.6080   -0.0020

0.6700    0.6642   -0.0058

0.7200    0.7232    0.0032


resnorm =  1.6039e-004  其实就是result所在结果的最后一列(拟合误差)的代数和。



大家想试验这个程序需要在myfun(,)定义三次多项式拟合方程才行!下面是三次多项式拟合函数方程

function [F] =MyFun(x,xdata)

%UNTITLED Summary of this function goes here

%   Detailed explanation goes here%

F = x(1)+x(2)*xdata.^1 + x(3)*xdata.^2 + x(4)*xdata.^3; % 三次多项式拟合方程




end

回答2:

x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界 ,若没有指定界,则lb=[ ],ub=[ ];
options为指定的优化参数;
fun为拟合函数,其定义方式为:x = lsqcurvefit(@myfun,x0,xdata,ydata),
其中myfun已定义为 function F = myfun(x,xdata)
F = … % 计算x处拟合函数值fun的用法与前面相同;
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
residual=fun(x,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。