参考代码:
% 生成测试数据
X = rand(100,1);
Y = rand(100,1);
k = 2;
a = 1.5;
b = 2.5;
Z = k*(X.^a).*(Y.^b);
% 数据加入噪声
Z = Z + randn(size(Z))*0.1;
% 数据拟合
f=inline('c(1)*x(:,1).^c(2).*x(:,2).^c(3)','c','x');
c=lsqcurvefit(f,[1 1 1],[X Y],Z)
% 绘图
[x,y] = meshgrid(linspace(min(X),max(X),20),linspace(min(Y),max(Y),20));
z = reshape(f(c, [x(:), y(:)]), size(x));
clf
a = 0.5;
mesh(x,y,z,'FaceAlpha',a,'EdgeAlpha',a);
hold on
plot3(X,Y,Z,'r.')
view(15,5)
xlabel('x'); ylabel('y'); zlabel('z');
拟合结果:
c =
1.9917 1.3921 2.4509
与真实模型的参数[2 1.5 2.5]吻合。