www.gusucode.com > matlab编写的一个拟合曲面的工具箱源码程序 > 3d_fitting/main.m

    function ff=main(x,p,y,q,z,xx,yy)
% x y z 坐标向量 长度要一样
% p ,q 为拟合函数中x,y 的系数
% xx yy 为 需要拟合的数据 给出(x,y) 坐标 求z

A=leftmatrix (x,p,y,q);             % A*a_n=B
B=rightmatrix(x,p,y,q,z);

%a_n=inv(A)*B;
a_n=A\B;                          % 求a_n    inv(A)*B 效果不好 (存疑)

for i=1 : length(a_n)             % 把长为p*q 的 a_n 列向量 转还 成p x q  的 aa 矩阵
    ii=quotient(i-1,q)+1;         % quotient求商
    jj=mod(i-1,q)+1;               
    aa(ii,jj)=a_n(i,1);
end
                                  
ff=0;                              % ff 是 xx,yy 带入所拟合的函数 求出 z 
for i=1 : p                        % 函数为 aa(i,j)*x^i*y^j  (i=0...p  ,j=0...q)
    for j=1 : q                    % aa 为系数  p x q 的矩阵
        ff=ff+aa(i,j) * xx^(i-1) * yy^(j-1);
    end
end