如何用MATLAB拟合曲线来求参数?

学习 时间:2026-04-04 18:30:19 阅读:3045
如何用MATLAB拟合曲线来求参数?我要计算的是a,b参数,已知c,k,y其中y=252*a/(2.016129032*10^9)*((cos(k)/sin(k))/c)^b其中数据为,c=[2.7,2.8,2.9,3,3.1,3.2,3.45,3.7,3.95,4.2,4.45,4.7,4.95,5.2]k=[ 0,47,93,140,186,279,372,465,558,651]; y=[18.98,27.35,34.86,38.52,38.44,37.73,38.43,43.87,42.77,46.22];要怎么拟合,才能求出a,

最佳回答

爱撒娇的早晨

怕孤独的书本

2026-04-04 18:30:19

令x=(cos(k)。/sin(k))。/c,这个就是xdata向量y=252/(2。016129032*10^9)*a*x^b取log得到log(y)=b*log(x)+log(252/(2。016129032*10^9)*a)所以log(y)与log(x)是线性关系,用p=polyfit(log(xdata),log(y),1)求出b=p(1);a=exp(p(2))/252*(2。016129032*10^9); % 因为log(252/(2。016129032*10^9)*a)=p(2)所以最终程序是如下:clear allc=[2。7,2。8,2。9,3,3。1,3。2,3。45,3。7,3。95,4。2,4。45,4。7,4。95,5。2];k=[0,47,93,140,186,279,372,465,558,651]; y=[18。98,27。35,34。86,38。52,38。44,37。73,38。43,43。87,42。77,46。22];xdata=(cos(k)。/sin(k))。/c;p=polyfit(log(xdata),log(y),1);b=p(1);a=exp(p(2))/252*(2。016129032*10^9);

最新回答共有2条回答

  • 单身的鸡翅
    回复
    2026-04-04 18:30:19

    令x=(cos(k)。/sin(k))。/c,这个就是xdata向量y=252/(2。016129032*10^9)*a*x^b取log得到log(y)=b*log(x)+log(252/(2。016129032*10^9)*a)所以log(y)与log(x)是线性关系,用p=polyfit(log(xdata),log(y),1)求出b=p(1);a=exp(p(2))/252*(2。016129032*10^9); % 因为log(252/(2。016129032*10^9)*a)=p(2)所以最终程序是如下:clear allc=[2。7,2。8,2。9,3,3。1,3。2,3。45,3。7,3。95,4。2,4。45,4。7,4。95,5。2];k=[0,47,93,140,186,279,372,465,558,651]; y=[18。98,27。35,34。86,38。52,38。44,37。73,38。43,43。87,42。77,46。22];xdata=(cos(k)。/sin(k))。/c;p=polyfit(log(xdata),log(y),1);b=p(1);a=exp(p(2))/252*(2。016129032*10^9);

上一篇 Jim,are they---------friends?

下一篇 在双人花样滑冰的运动在双人花样滑冰的运动中,有时会看到女运动员被男运动员拉着做圆锥摆运动的精彩场面,如果目测女运动员做圆