我给出了x,y和z的数据。我试图将一组数据拟合到功能形式的模型中,如下所述:
z(x, y) = c0*x^o*y2 + c1*x^1*y^1 + c2 *x^2*y^1
其中c0,c1,c2是要找到的系数。 我的尝试是使用nlinfit函数来解决它。
到目前为止,我已经尝试了
x= [ 0.001, .. 0.011];
y = [1, .. 10];
z = [ -.304860225 .. .379710865];
my_model= c0 * x^0 * y^2 + c1 * x^1 * y^1 + c2 * x^2 * y^0
[c0 c1 c2] = [1 2 3];
C= nlinfit( [x,y], z, @ my_model, [1 2 3])
此处x
,y
是自变量,z
是因变量。
如何为系数设置这些初始值?
我不确定如何在nlinfit
函数中传递参数。 HELP !!!
答案 0 :(得分:2)
您的模型是LINEAR w.r.t c0
,c1
和c2
。这里没有理由使用nlfit
。
您需要为x
y
数据构建Vandermonde matrix并使用反斜杠来恢复系数。
你的问题不是100%清楚模型是什么,所以我假设:
z(x,y) = c0 * x^nx0 * y^ny0 + c1 * x^nx1 * y^ny1 + c2 * x^nx2 * y^ny2
以nx0
,nx1
,nx2
,ny0
,ny1
和ny2
给出且已知a-priori。
您获得m
分,即m
- 向量x
,y
和z
,您希望得到c0
c1
和c2
给出了这三个m
- 向量。
此模型的Vandermonde矩阵是
V = [ ( x(:).^nx0 ).*( y(:).^ny0 ), ( x(:).^nx1 ).*( y(:).^ny1 ), ( x(:).^nx2 ).*( y(:).^ny2 ) ];
现在请注意,您的模型为右侧V*c = z
的LINEAR:c = [c0; c1; c2]
。
恢复c
(在最小二乘意义上)
c = V \ z