具有次多项式的matlab曲线拟合
matlab curve fitting with sub-polynomial
我想知道如何拟合三个点 x = ([0.42 0.64 0.96])
和
y = ([4.2 5.1 6.0])
y = k*x^(0.88)?
我试过 [p,S,mu] = polyfit(x,y,0.88);
但 MATLAB 说只接受整数的幂。谢谢
编辑:
我的想法是我知道这三个点应该遵循基于某种理论的曲线,所以我想绘制它来说服自己。另外,我想做曲线拟合,因为我不知道 k
是什么。
如果您愿意为模型添加常量,您可以这样做:
[p,S,mu] = polyfit(x.^(0.88),y,1);
那么您将 y
近似为 p(2)*x.^(0.88)+p(1)
(最小化误差的平方和)
那lsqnonlin
呢?
你可以试试
model = @(x,k) (k*x.^0.88);
resVec = @(k) (y(:) - model(x(:),k));
k_start = 1;
k_opt = lsqnonlin(resVec,k_start);
我想知道如何拟合三个点 x = ([0.42 0.64 0.96])
和
y = ([4.2 5.1 6.0])
y = k*x^(0.88)?
我试过 [p,S,mu] = polyfit(x,y,0.88);
但 MATLAB 说只接受整数的幂。谢谢
编辑:
我的想法是我知道这三个点应该遵循基于某种理论的曲线,所以我想绘制它来说服自己。另外,我想做曲线拟合,因为我不知道 k
是什么。
如果您愿意为模型添加常量,您可以这样做:
[p,S,mu] = polyfit(x.^(0.88),y,1);
那么您将 y
近似为 p(2)*x.^(0.88)+p(1)
(最小化误差的平方和)
那lsqnonlin
呢?
你可以试试
model = @(x,k) (k*x.^0.88);
resVec = @(k) (y(:) - model(x(:),k));
k_start = 1;
k_opt = lsqnonlin(resVec,k_start);