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

2024-12-15 22:04:53
推荐回答(4个)
回答1:

在拟合前提取出变量的最后一部分数据。
假设,你的数据横坐标变量为x,纵坐标变量为y,拟合函数y=f(x),可以采用如下方法提取出所要的部分数据:
index=intersect(find(x>=4000),find(x<=5000));
xx=x(index);
yy=y(index);
然后对xx和yy进行拟合就可以了。

回答2:

请问你的用意是什么了?
如果你只想要尾部重合的话,那就只用尾部的数据来计算新曲线,其余部分一般都不会重合的。
所以我不太明白你为什么要这样的曲线?
或者说其余部分的不重合有严格的数学要求?

回答3:

合适的模型。

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

图形见:

回答4:

可以用polyfit