插值和拟合都是数据优化的一种方法,当实验数据不够多时常常须要用到这样的方法来绘图。

在matlab中都有特定的函数来完毕这些功能。

这两种方法的确别在于:

当測量值是准确的,没有误差时,一般用插值;

当測量值与真实值有误差时。一般用数据拟合。

插值:

对于一维曲线的插值,一般用到的函数yi=interp1(X,Y,xi,method) 。当中method包含nearst,linear,spline。cubic。

对于二维曲面的插值,一般用到的函数zi=interp2(X,Y,Z,xi,yi,method)。当中method也和上面一样,经常使用的是cubic。

拟合:

对于一维曲线的拟合,一般用到的函数p=polyfit(x,y,n)和yi=polyval(p,xi)。这个是最经常使用的最小二乘法的拟合方法。

对于二维曲面的拟合,有非常多方法能够实现。可是我这里自己用的是Spline Toolbox里面的函数功能。详细用法能够看后面的样例。

对于一维曲线的插值和拟合相对照较简单。这里就不多说了。对于二维曲面的插值和拟合还是比較有意思的。

总结归纳一下给出实例和解说。

%第一给样例

clc;clear;clf;
%原始数据的定义
x=[1:1:12];
y=[1:1:5];
%z是一个5乘12的矩阵。

z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;
0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;
0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;
0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;
0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37];
%直接用原始数据绘图例如以下:
%surf三维表面图
surf(x,y,z);
title('Original data Plot');
xlabel('X'), ylabel('Y'), zlabel('Z'),
%对X,Y,Z轴范围的控制
axis([0 15 0 6 0.2 0.55]);

%第二给样例

clc;clear;clf;

%原始数据的定义

x=[1:1:12];

y=[1:1:5];

%z是一个5乘12的矩阵。

z=[0.2 0.24 0.25 0.26 0.25 0.25 0.25 0.26 0.26 0.29 0.25 0.29;

0.27 0.31 0.3 0.3 0.26 0.28 0.29 0.26 0.26 0.26 0.26 0.29;

0.41 0.41 0.37 0.37 0.38 0.35 0.34 0.35 0.35 0.34 0.35 0.35;

0.41 0.42 0.42 0.41 0.4 0.39 0.39 0.38 0.36 0.36 0.36 0.36;

0.3 0.36 0.4 0.43 0.45 0.45 0.51 0.42 0.4 0.37 0.37 0.37];

%先考虑插值,须要用到的函数interp2

x1=1:0.2:12;

y1=1:0.2:5;

[x2,y2]=meshgrid(x1,y1);

t11=interp2(x,y,z,x2,y2,'cubic');

surf(x1,y1,t11);

title('After Fit data Plot');

xlabel('X'), ylabel('Y'), zlabel('Z'),

%对X,Y,Z轴范围的控制

axis([0 15 0 6 0.2 0.55]);

%第三个样例

x = rand(100,1)*16 - 8;

y = rand(100,1)*16 - 8;

r = sqrt(x.^2 + y.^2) + eps;

z = sin(r)./r;

xlin = linspace(min(x),max(x),33);

ylin = linspace(min(y),max(y),33);

[X,Y] = meshgrid(xlin,ylin);

Z = griddata(x,y,z,X,Y,'cubic');

mesh(X,Y,Z) %interpolated

axis tight; hold on

plot3(x,y,z,'.','MarkerSize',15) %nonuniform

Matlab曲面拟合和插值的更多相关文章

  1. Matlab随笔之插值与拟合(上)

    原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注 ...

  2. Matlab随笔之插值与拟合(下)

    原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matl ...

  3. matlab二维插值--interp2与griddata

    二者均是常用的二维插值方法,两者的区别是, interp2的插值数据必须是矩形域(X,Y必须分别是单调向量),即已知数据点(x,y)组成规则的矩阵,或称之为栅格,可使用meshgid生成. gridd ...

  4. CPP,MATLAB实现牛顿插值

    牛顿插值法的原理,在维基百科上不太全面,具体可以参考这篇文章.同样贴出,楼主作为初学者认为好理解的代码. function p=Newton1(x1,y,x2) %p为多项式估计出的插值 syms x ...

  5. 【matlab】 拉格朗日插值

    第一个函数  "lagrange1.m" 输入:X Y 与点x0 输出:插值函数对应函数值 y0 function y = lagrange1(X,Y,x0) n = length ...

  6. MATLAB拟合和插值

    定义 插值和拟合: 曲线拟合是指您拥有散点数据集并找到最适合数据一般形状的线(或曲线). 插值是指您有两个数据点并想知道两者之间的值是什么.中间的一半是他们的平均值,但如果你只想知道两者之间的四分之一 ...

  7. MATLAB二维插值和三维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  8. matlab学习——05插值和拟合(黄河小浪底调水调沙问题)

    05插值和拟合 黄河小浪底调水调沙问题 data3.txt 1800 1900 2100 2200 2300 2400 2500 2600 2650 2700 2720 2650 32 60 75 8 ...

  9. matlab学习——05插值和拟合(一维二维插值,拟合)

    05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算.并求x=0处的曲线斜率和13<=x<=15范围内y的最小值. x0=[0 3 5 7 9 11 ...

随机推荐

  1. virtio-netdev 发送数据包

    在前面几文中已经大体介绍了virtio的重要组成,包含virtio net设备的创建,vring的创建,与virtio设备的交互方式.我们就从网络数据包的发送角度来看下virtio的详细使用流程. [ ...

  2. schedule vs scheduleAtFixedRate

    最好的方法是在两者之间区分 timer灵感时间设定过去时间T,scheduleAtFixedRate将从T现在所有的任务中运行,schedule而该任务将只运行从现在开始计时. public clas ...

  3. 基于Spring + Spring MVC + Mybatis 高性能web构建

    基于Spring + Spring MVC + Mybatis 高性能web构建 一直想写这篇文章,前段时间 痴迷于JavaScript.NodeJs.AngularJs,做了大量的研究,对前后端交互 ...

  4. 对ESB概念的理解(转)

    http://www.ibm.com/developerworks/cn/webservices/0811_magy_esb/ 什么是 ESB?ESB 严格来说不是某一个产品,而是一种框架,设计模式. ...

  5. VS2010或2012中,如何设置代码格式化?

    ctrl + E,D菜单在 编辑-->高级 里面 第一个菜单项

  6. 使用hql当异常查询:Xxx is not mapped[from Xxx where ...]

    采用当今项目hql询问.出现    QingAoCenterInfo is not mapped[from QingAoCenterInfo where...] 显然地Hibernate映射关系出现了 ...

  7. Linux进程管理(-)

    一.进程的类型 能够将执行在Linux系统中的进程分为三种不同的类型: 交互进程:由一个Shell启动的进程.交互进程既能够在前台执行,也能够在后台   执行. 批处理进程:不与特定的终端相关联,提交 ...

  8. How to Use NSLog to Debug CGRect and CGPoint

    转载:  http://iosdevelopertips.com/debugging/how-to-use-nslog-to-debug-cgrect-and-cgpoint.html CGPoint ...

  9. 百度echarts扇形图每个区块增加点击事件

    效果图:操作人员要求 :我想看这个扇形图对应的 页面信息,给我加个链接跳转:原先的chart.js发现没有api,后来改用百度的echart.js <!DOCTYPE html> < ...

  10. css Tab选项卡1

    利用   锚点原理 以及overflow:hiden 结合,实现纯  css  tab 方式 兼容ie6 + 适合单个tab   不需要js          注意点  红色方框的   a 对应a   ...