怎样用MATLAB去拟合已知曲线的一部分?比如只需拟合一条曲线的尾部?

现在有一条曲线,我只需要拟合出一条新曲线与原曲线的尾部重合就行了。
比如原曲线的X轴定义为[1:100:5000],新拟合的曲线在[1:100:5000]也是有值的,只是在[4000:100:5000]这一段尾部与原曲线拟合重合,其余部分不重合。
谢谢!

在拟合前提取出变量的最后一部分数据。
假设,你的数据横坐标变量为x,纵坐标变量为y,拟合函数y=f(x),可以采用如下方法提取出所要的部分数据:
index=intersect(find(x>=4000),find(x<=5000));
xx=x(index);
yy=y(index);
然后对xx和yy进行拟合就可以了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-02
请问你的用意是什么了?
如果你只想要尾部重合的话,那就只用尾部的数据来计算新曲线,其余部分一般都不会重合的。
所以我不太明白你为什么要这样的曲线?
或者说其余部分的不重合有严格的数学要求?追问

就是要求拟合的新曲线与原曲线只要尾部重合,而其余部分不重合

第2个回答  2011-03-02
合适的模型。

function hhhh
clc;clear;
A=[...
25.0 500.7 0.068083799
50.0 455.7 0.061964824
75.0 427.0 0.058062277
100.0 389.3 0.052935935
150.0 357.7 0.048639055
200.0 333.7 0.045375602
250.0 309.0 0.042016964]
X=A(:,1);Y=A(:,2);Y1=A(:,3);
plotyy(X,Y,X,Y1)
a=Y./Y1
beta0=[1 1 1];
beta=nlinfit(X,Y,@fun,beta0)
x=25:250;
y=beta(1)*x.^beta(2)+beta(3);
figure
plot(X,Y,'o',x,y)
function yhat=fun(beta,x)
yhat=beta(1)*x.^beta(2)+beta(3);

结果:
beta =

-171.7423 0.2014 830.8742

图形见:
第3个回答  2011-03-02
可以用polyfit