matlab关于plotfit函数,lsqcurvefit函数,cftool工具箱的使用
来源:互联网 发布:农村淘宝的前景怎么样 编辑:程序博客网 时间:2024/05/22 15:26
plotfit函数使用
plot是画图函数
polyval是求值函数
polyfit是曲线拟合函数
polyfit用于多项式曲线拟合
p=polyfit(x,y,m)
其中, x, y为已知数据点向量, 分别表示横,纵坐标, m为拟合多项式的次数, 结果返回m次拟合多项式系数, 从高次到低次存放在向量p中.
y0=polyval(p,x0)
可求得多项式在x0处的值y0
clc;clear%清除变量y=[100.3 101.1 102.1 101.1 101.6 104.4 102.5 102.1 103.9 103.9]; x=1:length(y);A=polyfit(x,y,2) %2次相拟合,这个2可以修改的 模型系数Z=polyval(A,x); %预测ylen=[1:20];len1=polyval(Z,len); %预测走势result=[y;Z]%实际值与预测值error=abs(y-Z);%误差bfb=error./y%相对误差errorsum=sum(error)/length(y)%平均误差bfbsum=sum(bfb)/length(y)%平均相对误差figure(1)plot(x,y,'r-',x,Z,'b-')legend('实际值','拟合值')title('实际值与预测值的比较','fontsize',15)ylabel('Y','fontsize',15)xlabel('X','fontsize',15)figure(2)plot(len,len1,'b-')legend('拟合曲线')title('拟合曲线图','fontsize',15)ylabel('Y','fontsize',15)xlabel('X','fontsize',15)%http://blog.sina.com.cn/s/blog_4bf0985d0102v5yc.html 参考博客
拟合结果
lsqcurvefit函数拟合
解释1
格式 x = lsqcurvefit(fun,a0,xdata,ydata)
x = lsqcurvefit(fun,a0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,a0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(…)
[x,resnorm,residual] = lsqcurvefit(…)
[x,resnorm,residual,exitflag] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…)
参数说明:
a0为初始解向量, 因为求解是一个迭代的过程,需要先给定一个初始参数,再逐步修改参数的过程。所以要对a0初始化,一般而言,可以随机,但是经验上取与解接近的值会提高计算速度。
xdata,ydata为满足关系ydata=F(a, xdata)的数据;
lb、ub为解向量的下界和上界lb≤a≤ub,若没有指定界,则lb=[ ],ub=[ ];
options为指定的优化参数;
fun为待拟合函数,计算x处拟合函数值,其定义为 function F = myfun(a,xdata)
resnorm=sum ((fun(a,xdata)-ydata).^2),即在a处残差的平方和;
residual=fun(a,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。
解释2
lsqcurvefit(f,a,x,y)
f:符号函数句柄,如果是以m文件的形式调用的时候,别忘记加@.这里需要注意,f函数的返回值是和y匹对的,即拟合参数的标准是(f-y)^2取最小值,具体看下面的例子
a:最开始预估的值(预拟合的未知参数的估计值)。如下面的问题如果我们预估a(1)为1,a(2)为3,a(3)为7,a(4)为5,a(5)为7则a0=[1,3,7,5,7]
x:我们已经获知的x的值
y:我们已经获知的x对应的y的值
clc;clear%清除变量y=[100.3 101.1 102.1 101.1 101.6 104.4 102.5 102.1 103.9 103.9]; xdata=1:length(y);a0=[1,3,7,5,7]; %初始估计值,随便写 这个是4次拟合 ,具体表达式可以随便改options=optimset('Tolfun',1e-15); %方法设定for i=1:1000 x=lsqcurvefit(@fun1,a0,xdata,y,[],[],options); %确定待定系数 a0=x;%以计算出的x为初值,循环迭代1000次enddisp(x);%输出系数yy = fun1(x,xdata);%利用已经拟合好的模型预测y值len=[1:20];len1 = fun1(x,len);%预测走势result=[y;yy]%实际值与预测值error=abs(y-yy);%误差bfb=error./y%相对误差errorsum=sum(error)/length(y)%平均误差bfbsum=sum(bfb)/length(y)%平均相对误差figure(1)plot(xdata,y,'r-',xdata,yy,'b-')legend('实际值','拟合值')title('实际值与预测值的比较','fontsize',15)ylabel('Y','fontsize',15)xlabel('X','fontsize',15)%axis([1 10 1 200]);%坐标范围%set(gca,'xtick',[1 2 ...10]);%X轴设定%set(gca,'ytick',[1 20 40 ...200]);%Y轴设定figure(2)plot(len,len1,'r-')legend('拟合曲线')title('拟合曲线图','fontsize',15)ylabel('Y','fontsize',15)xlabel('X','fontsize',15)function y = fun1(a, x);y = a(1) + a(2)*x + a(3)*x.^2 + a(4)*x.^3 + a(5)*x.^4
非线性拟合需要自己先设定好函数表达式,我们可以自己先把原始数据画个散点图,看大体趋势,然后自己构造函数
拟合结果
cftool函数拟合工具箱简介
在命令框中输入cftool出来如下图
把可视化结果放大和修改 只需要点击 文件——print to Figure
然后就可以在图片上面修改坐标,标题等
参考链接
http://blog.sina.com.cn/s/blog_4d4afb6d0100t37n.html
- matlab关于plotfit函数,lsqcurvefit函数,cftool工具箱的使用
- MATLAB的cftool工具箱
- Matlab的曲线拟合工具箱CFtool的使用
- Matlab的曲线拟合工具箱CFtool使用简介
- Matlab的曲线拟合工具箱CFtool使用简介
- Matlab的曲线拟合工具箱CFtool使用简介
- Matlab的曲线拟合工具箱CFtool使用简介
- Matlab的曲线拟合工具箱CFtool使用
- Matlab的曲线拟合工具箱CFtool使用简介
- Matlab的曲线拟合工具箱CFtool使用简介
- 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool
- 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool
- 数据拟合---使用自定义函数进行非线性拟合 -在Origin。matlab拟合工具箱cftool
- MATLAB的cftool工具箱简介
- Matlab的曲线拟合工具箱CFtool使用简介及一种非线性函数的曲线拟合方法(函数公式: k = A*(T^a)*exp(E/T) )
- matlab 2011b曲线拟合工具箱cftool的使用
- matlab使用lsqcurvefit函数出现 lsqcurvefit at 253 Function value and YDATA sizes are incommensurate.
- Matlab曲线拟合工具箱 cftool
- aravel-ide-helper的安装方法
- 文件短名转长名
- 啥是web service 和soap?
- 使用Spring注解,在静态方法中注入bean
- 事务以及Spring中的事务管理一
- matlab关于plotfit函数,lsqcurvefit函数,cftool工具箱的使用
- Spark Streaming 3:转换操作
- 有关一些swift 控件的基本创建和使用
- Android RadioGroup多行显示,解决单选问题
- [leetcode] 330. Patching Array
- webview 不显示图片
- java thread
- win10 cmd窗口切换目录并运行python代码
- Eqs POJ