%----------------------------------------------------------
%参数拟合
%非线性最小二乘法拟合
% xdata = [3.6,7.7,9.3,4.1,8.6,2.8,1.3,7.9,10.0,5.4];
% ydata = [16,150.5,260.1,22.5,206.5,9.9,2.7,165.5,325.0,54.5];
% c0=[ 0 0 0];
% f_h=@(c, x) c(1)*x.^2 + c(2)*x.*sin(x) + c(3)*x.^3;
% [c, resnorm, r]=lsqcurvefit(f_h, c0,xdata,ydata);
%fittype曲线拟合
% clear; clc;
% x=[0,0.4,1.2,2,2.8,3.6,4.4,5.2,6,7.2,8,9.2,10.4,11.6,12.4,13.6,14.4,15]';%加转秩
% y=[1,0.85,0.29,-0.27,-0.53,-0.4,-0.12,0.17,0.28,0.15,-0.03,-0.15,-0.07,0.059,0.08,0.032,-0.015,-0.02]';%加转秩
% ft=fittype('a*cos(k*x)*exp(w*x)', 'independent','x');
% fo=fit(x, y, ft);
% xx=0:0.1:20;
% yy=fo(xx);
% plot(x, y, 'r*', xx, yy, 'b-');
%------------------------------------------------------------
%插值拟合
%y=interp1(x0,y0,x,’method’)
%Method 的选项有 ‘nearest’, ‘next’, ‘previous’, ‘linear’,‘spline’,‘pchip’, 和 'cubic'.
%缺省的机器设置为'linear'.
% x=[0,3,5,7,9,11,12,13,14,15];
% y=[0,1.2,1.65,2.1,2.15,2.0,1.85,1.65,1.55,1.25];
% xi=0:0.1:15;
% yi=interp1(x,y,xi,'spline');
% yi1=interp1(x,y,xi,'linear');
% yi2=interp1(x,y,xi,'cubic');
% plot(x,y,'*',xi,yi,'r-',xi,yi1,'b-',xi,yi2,'g-');
% legend('节点','三次样条插值','线性插值','立方插值')
%二元函数插值
% 1. 网格节点数据插值函数:interp2
% 格式:z=interp2(x0, y0, z0, x, y, ’method’)
% x0,y0,z0:插值节点坐标,要求x0, y0单调;
% x, y是被插值点的横坐标与纵坐标( x, y不能超过x0,y0的范围),z是被插值点的函数值。
% Method:(1)nearest 最邻近插值
% (2)linear 双线性插值
% (3)cubic双三次插值
% 默认为双线性插值。
%离散点插值针对坐标点不单调的情况
% 散点数据插值函数:griddata
% 已知n个插值节点(xi, yi, zi), (i=1,2,…,n), 求在点(x,y)处的插值z,
% matlab提供函数griddata。
% 格式:cz=griddata(x,y,z,cx,cy,’method’)
% 其中x,y,z 均为n 维向量,指明所给数据点(插值节点)的横坐标、纵坐标和竖坐标。 cx, cy是给定被插值点的横坐标和纵坐标,cz为相应点的竖坐标。
% 若cx,cy是向量,则给定以它们所确定网格点的横坐标和纵坐标,这时要求cx,cy一个为行向量一个为列向量。
% 编程时也可先用meshgrid将cx,cy定义成网格矩阵。
% clear ,clc
% x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];
% y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];
% z=-[4,8,6,8,6,8,8,9,9,8,8,9,4,9];
% [x1,y1]=meshgrid(75:5:200,-50:5:150);
% z1=griddata(x,y,z,x1,y1,'v4');
% surf(x1,y1,z1)
% figure(2)
% [c,h]=contourf(x1,y1,z1);
% clabel(c,h)
有一部分为测试用例,仅供演示