需要用matlab绘制一个图,先根据原始数据绘制散点图,程序如下,现在问题是要将拟合函数绘制进散点图做对

x=[4.5,5.9,7.6,8.1,11.2,15.2,17.5,18.5,19.3,20.5,23.4,28.2];
y=[1.59,2.8,3.21,3.34,3.21,3.6,5.23,6.23,7.86,9.21,9.35,9.42];
plot(x,y,'-*')
hold on
plot(x,ybest,'b')

拟合函数为:
ybest=-22.1581+10.19286*x-1.49901*x.^2+0.09879*x.^3-0.0029*x.^4;
需要讲散点图和此函数图绘制入同一个图表对对比,敬请各位高手相助!
x=[4.5,5.9,7.6,8.1,11.2,15.2,17.5,18.5,19.3,20.5,23.4,28.2];
y=[1.59,2.8,3.21,3.34,3.21,3.6,5.23,6.23,7.86,9.21,9.35,9.42];
plot(x,y,'*')
hold on
我不是用matlab拟合的,效果不太好,那如果我不需要加入这个曲线函数图,而就用matlab 拟合一下这些散点,使之成为一条平滑曲线呢?可否有这样的程序?万谢。。。。。

你这个拟合函数有严重的错误根据你所提供的函数我做了拟合 及其不接近
程序如下 自己去看下吧
函数程序:
function ybest=ybest(x)
ybest=-22.1581+10.19286*x-1.49901*x.^2+0.09879*x.^3-0.0029*x.^4
主运行程序
clc
clear
x=[4.5,5.9,7.6,8.1,11.2,15.2,17.5,18.5,19.3,20.5,23.4,28.2];
y=[1.59,2.8,3.21,3.34,3.21,3.6,5.23,6.23,7.86,9.21,9.35,9.42];
plot(x,y,'-*');hold on
y1=ybest(x)
plot(x,y1,'-o')
现在就是用matlab函数进行拟合
clc
clear
x=[4.5,5.9,7.6,8.1,11.2,15.2,17.5,18.5,19.3,20.5,23.4,28.2];
y=[1.59,2.8,3.21,3.34,3.21,3.6,5.23,6.23,7.86,9.21,9.35,9.42];
subplot(2,2,1),
plot(x,y,'o');hold on
p=polyfit(x,y,1)
y1=polyval(p,x);
plot(x,y1,'-*')
subplot(2,2,2),
plot(x,y,'o');hold on
p=polyfit(x,y,2)
y1=polyval(p,x);
plot(x,y1,'-*')
subplot(2,2,3),
plot(x,y,'o');hold on
p=polyfit(x,y,3)
y1=polyval(p,x);
plot(x,y1,'-*')
subplot(2,2,4),
plot(x,y,'o');hold on
p=polyfit(x,y,4)
y1=polyval(p,x);
plot(x,y1,'-*')
通过比较发现四次拟合最合适

p =

-0.0004 0.0226 -0.4441 3.6236 -7.4335

多项式的系数
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-06
x=[4.5,5.9,7.6,8.1,11.2,15.2,17.5,18.5,19.3,20.5,23.4,28.2];
y=[1.59,2.8,3.21,3.34,3.21,3.6,5.23,6.23,7.86,9.21,9.35,9.42];
plot(x,y,'-*')
hold on
ybest=-22.1581+10.19286*x-1.49901*x.^2+0.09879*x.^3-0.0029*x.^4;
plot(x,ybest,'k')
axis tight

如果只需要平滑,可以用三次样条插值spline
x=[4.5,5.9,7.6,8.1,11.2,15.2,17.5,18.5,19.3,20.5,23.4,28.2];
y=[1.59,2.8,3.21,3.34,3.21,3.6,5.23,6.23,7.86,9.21,9.35,9.42];
xx=4:0.01:30;
yy=spline(x,y,xx);
plot(x,y,'o',xx,yy)
第2个回答  2021-05-18

本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!

相似回答