Matlab插值与拟合 插值 拟合
插值 一维插值 已知 n+1个节点 其中 互不相同,不妨设 求任一插值点 处的插值 节点可视为由 产生。 表达式复杂,或无封闭形式,或未知。
构造一个(相对简单的)函数 通过全部节点, 即 再用 计算插值,即
MATLAB 插值函数 函数名称 功能说明 griddata 构造数据网格,二维曲面拟合 griddata3 构造数据网格,三维拟合 interp1 一维插值 interp2 二维插值 interpft 一维插值(采用快速傅里叶变换算法) spline 立方样条插值
yi = interp1(x, y, xi, 'method') 一维插值的Matlab解决 yi = interp1(x, y, xi, 'method') x, y:节点 xi:插值点 method nearest:最邻近插值 linear: 双线性插值; spline: 三次样条插值; cubic或pchip : 立方插值。 缺省时: 双线性插值。 所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。
二维插值 构造一个二元函数通过所有已知节点,再利用该函数求出插值点的函数值。 m×n个节点,顺序排列且各不相同 n个节点,无序排列且各不相同
z = interp2(x0, y0, z0, x, y, 'method') 二维插值的Matlab解决 z = interp2(x0, y0, z0, x, y, 'method') x0, y0, z0:节点 x, y:插值点 method nearest:最邻近插值 linear: 双线性插值; spline: 三次样条插值; cubic或pchip : 立方插值。 缺省时: 双线性插值。 要求x0,y0单调; x,y可取为矩阵,或x取行向量,y取为列向量; x,y的值分别不能超出x0,y0的范围。
三角测量和分散数据插值 最近点集问题分析和几何学分析 函数名称 功能说明 convhull 凸包 delaunay 德洛涅三角剖分. dsearch 德洛涅三角最近点搜索 inpolygon 判断点是否位于多边形区域 polyarea 多边形面积 rectint 两个或多个矩形交叉面积 voronoi 火龙尼图形
拟合 基本概念 已知一组(二维)数据,即平面上 n个点(xi , yi) i=1,…n, 寻求一个函数(曲线)y = f(x), 使 f(x) 在某 种准则下与所有数据点最为接近,即曲线拟合得 最好。 x y y = f(x) i 为点(xi,yi )与曲线 y=f(x) 的距离
最小二乘法 第一步:先选定一组函数 r1(x), r2(x), …rm(x), m<n, 令 f(x)=a1r1(x)+a2r2(x)+ …+amrm(x) (1) 其中 a1,a2, …am 为待定系数。 第二步: 确定a1,a2, …am 的准则(最小二乘准则): 使n个点(xi,yi) 与曲线 y = f(x) 的距离i 的平方和最小 。 记 问题归结为,求 a1,a2, …am 使 J(a1,a2, …am) 最小。
函数选择 通过机理分析建立数学模型来确定 f(x); 将数据 (xi,yi) i=1, …n 作图,通过直观判 断确定 f(x)。
多项式拟合的Matlab解决 a = polyfit (x , y , m) x, y:节点 m:多项式的次数 a:多项式的系数,降序排列
x = lsqcurvefit (‘fun’,x0,xdata,ydata); 非线性拟合的Matlab解决1 x = lsqcurvefit (‘fun’,x0,xdata,ydata); fun:是一个事先建立的定义函数F(x,xdata) 的M文 件, 自变量为x(待定参数)和xdata x0:迭代初值 xdata,ydata:已知数据点 lsqcurvefit用以求含参量x(向量) 的向量值函数 F(x,xdata)=(F(x,xdata1),…,F(x,xdataN))T 中的参变量x(向量),使得
非线性拟合的Matlab解决2 x = lsqnonlin (‘fun’,x0) fun:是一个事先建立的定义函数F(x) 的M文件, 自 变量为x(待定参数) x0:迭代初值 lsqnonlin用以求含参量x(向量)的向量值函数 f(x) = ( f1(x) , f2(x) , … , fn(x) )T 中的参量x,使得 最小。其中 fi(x) = f(x,xdatai,ydatai) = F(x,xdatai ) - ydatai