用matlab曲线拟合时遇到的问题

发现根据曲线拟合出的方程,再画出曲线,和拟合时的曲线不相同?为什么?急!谢谢
具体代码是这样的

第一部分,曲线拟合:
X=[0.24 0.52 1.54 3.91 10.8 18.7 25 30.6 45 55 70 100 118 150 200 250 300 350 400 450 500 550 600 650 700 751]
Y=[5 10 20 30 40 45 48 50 52 54 56 59 60 61.5 63 64 65 66 66.6 67 67.5 68 68.5 69 69.5 70]
p=polyfit(X,Y,3)
y=vpa(poly2sym(p),6)
XX=[0.24 0.52 1.54 3.91 10.8 18.7 30.6 118 751];
YY=polyval(p,XX);
plot(X,Y,'o',XX,YY)

第二部分,根据方程画曲线代码
clear all;
x=0:1:800;
y=.688737e-6*x.^3-.899208e-3*x.^2+.349732*x+28.7791
plot(x,y);axis([0 800 0 80]);

是不是曲线拟合的代码不对?我不希望第一象限曲线上升后又下降
如有可能,请达人给出程序

数据量不足造成的,略改一下就好了。
不过,曲线不适合多项式拟合,即使使用高次幂也不理想,用指数方程拟合效果好多了。

clear;clc;clf;
X=[0.24 0.52 1.54 3.91 10.8 18.7 25 30.6 45 55 70 100 118 150 200 250 300 350 400 450 500 550 600 650 700 751];
Y=[5 10 20 30 40 45 48 50 52 54 56 59 60 61.5 63 64 65 66 66.6 67 67.5 68 68.5 69 69.5 70];
p=polyfit(X,Y,3)
y=vpa(poly2sym(p),6)
XX=min(X):0.1:max(X) %只改动了它
YY=polyval(p,XX);
plot(X,Y,'o',XX,YY)
%非线性拟合(指数方程)
fx=@(a,x) a(1).*x.^a(2)+a(3)
a=nlinfit(X,Y,fx,[-100 -1 100])
Yn=a(1).*XX.^a(2)+a(3);
hold on
plot(XX,Yn,'r')

曲线见我的博客:
http://hi.baidu.com/chemical%5Fengineering/album/item/2b1b0ad1024c8dc3562c84f1.html
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-02-28
不知道你学过线性回归没有?
出现这种结果是预料之中的

我没有试验,但可以肯定的说:
曲线拟合方程本身就是有误差的,方程次数设置的越高越精确.你的次数不够高,所以不够精确
理论上,你使用了n组数据,就要将次数设置成n-1次才能拟合出精确的方程,但这样做不好.

你可以试着把次数设置高点,再看看拟合情况
第2个回答  2008-03-03
你定义的这个在线定义函数,没有变量!你定义的格式不对

关于matalb指数函数曲线拟合问题?
针对MATLAB指数函数曲线拟合问题,首先需要明确的是,使用MATLAB进行指数函数拟合通常涉及到利用其内置的curve fitting工具箱。该工具允许用户通过指定模型类型(例如指数模型)来拟合数据集。在这个特定情况下,公式"f = General model: f(x) = c*k.^x"表示所使用的模型是一个通用指数模型。其中"c"和"...

matlab在曲线拟合的时候,报错:矢量长度必须相同。 这个要怎么处理...
matlab在曲线拟合的时候,报错:矢量长度必须相同。分析给出的代码其报错的原因是,t的长度与pop的长度不相等(即:t的个数是211,而pop的个数是22),引起错误的语句是t=0:0.1:21,该t值已替换了t=0:21(t=0:1:21),按下列代码修改,可以正常出图。t=0:21;pop=[3.9,5.3,7.2,9....

MATLAB曲线拟合 有个小错误
错误三:最小二乘法拟合函数使用不恰当,应使用 nlinfit()函数 错误四:plot(x,y)的x,y不对应,应改为 x=-100:1:100;y=myfun1(a,x);plot(x,y);

函数模型已知,matlab拟合效果不好,参数初值选取困难,求高手解决啊...
曲线拟合一般是多项式函数拟合,这个函数非线性程度极高,而且和多项式函数差别太大,是很难拟合的。实际上你要解决的应该是参数估计问题,而非拟合问题。这个明显是一个最小二乘估计问题。如果你就是用的最小二乘估计的话,问题可能出在两个地方:1、如果数据点含有非高斯白噪声分布的干扰,那么从理论...

matlab curve fitting 拟合自定义函数问题?
用matlab curve fitting 拟合自定义函数时,参数a、b、n、m拟合不出来的问题?分析了题主给出的数据和形式,问题应该出在数据书写上,没有按标准格式,即每行x,y,z数据没有用分号隔开,A=[1 1 890.643; 1 454.285 1;。。。]数据按上述修改后,就可以用拟合工具箱,对a、b、n、m参数进行...

matlab多项式曲线拟合误差怎么计算?
在Matlab中使用`polyfit`函数进行多项式曲线拟合时,可通过以下方法计算拟合误差:1. 残差平方和(RSS)残差平方和是计算拟合曲线与原始数据之间的误差大小,其公式为RSS = Σ(y - y_fit)^2,其中y为原始数据点,y_fit为拟合曲线上的点。2. 均方根误差(RMSE)均方根误差为残差平方和的平均值的...

用matlab拟合函数式的时候为什么出现错误?
一开始我也是拟合出来一个最高次项为6的多项式,然而用这个函数式去验证的时候发现得到完全不一样的曲线,不知道lz是不是跟我一样的问题:类似于2E-10x^6这样的在输入进去的时候输入的是2*10^(-10)*x^6这是没问题的,但是问题出现在我们的到的这个2E-10x^6多项式的参数是不准确的,类似问题的...

用matlab中lsqnonlin函数拟合的曲线为什么差距这么大,跪求大神指点...
为什么用matlab中lsqnonlin函数拟合的曲线的差距有这么大?可能的原因是:1、拟合数学模型不合理 2、从散点图中可以看到,由于有极小点存在,造成拟合迭代初值没有靠近拟合曲线

MATLAB拟合曲线,为什么结果不对?
MATLAB拟合曲线,为什么结果不对?不对的原因是选择的数学模型不符,所以应调整数学函数表达式。拟合好坏可以通过数理分析计算,R²是否接近于1.

各位大侠急求啊,matlab程序,先经过滤波,然后用滤波后得到的数据进行曲线...
1.for循环处出错2.拟合函数写错 下面是修改过的;fn=1600;%采样频率 fp=[80,150]; %要求保留的频段 fs=[60,180];Rp=3; Rs=30;Wp=fp\/(fn\/2);%计算归一化角频率 Ws=fs\/(fn\/2);t=0:1\/fn:1;x1=sin(2*pi*300*t); %这里X1是噪声 需要通过带阻滤波滤除 x2=sin(2*pi*12...

相似回答